-------------------------------------------------------------------
■脆弱性の種類
-------------------------------------------------------------------
SQLインジェクション(特殊な条件下でのみ発生)
-------------------------------------------------------------------
■不具合が存在するEC-CUBEのバージョン
-------------------------------------------------------------------
EC-CUBE 正式版 2.11.3 未満 (Ver2.11.0~2.11.2)
-------------------------------------------------------------------
■修正方法について(以下は Ver2.11.2 からの修正点となっております。)
-------------------------------------------------------------------
data/class/SC_Query.php
の以下のコードを変更します。
■462行目付近の2行を削除
-------------------------------------------------------------------
変更前
-------------------------------------------------------------------
$strval .= 'Now(),';
} else if(strcasecmp('CURRENT_TIMESTAMP', $val) === 0) {
$strval .= 'CURRENT_TIMESTAMP,';
} else if(strpos($val, '~') === 0) {
$strval .= preg_replace("/^~/", "", $val);
} else {
$strval .= '?,';
$arrval[] = $val;
-------------------------------------------------------------------
-------------------------------------------------------------------
変更後
-------------------------------------------------------------------
$strval .= 'Now(),';
} else if(strcasecmp('CURRENT_TIMESTAMP', $val) === 0) {
$strval .= 'CURRENT_TIMESTAMP,';
} else {
$strval .= '?,';
$arrval[] = $val;
-------------------------------------------------------------------
■502行目付近の2行を削除
-------------------------------------------------------------------
変更前
-------------------------------------------------------------------
$arrCol[] = $key . '= Now()';
} else if(strcasecmp('CURRENT_TIMESTAMP', $val) === 0) {
$arrCol[] = $key . '= CURRENT_TIMESTAMP';
} else if(strpos('~', $val) === 0) {
$arrCol[] = $key . '= ' . $val;
} else {
$arrCol[] = $key . '= ?';
$arrVal[] = $val;
-------------------------------------------------------------------
-------------------------------------------------------------------
変更後
-------------------------------------------------------------------
$arrCol[] = $key . '= Now()';
} else if(strcasecmp('CURRENT_TIMESTAMP', $val) === 0) {
$arrCol[] = $key . '= CURRENT_TIMESTAMP';
} else {
$arrCol[] = $key . '= ?';
$arrVal[] = $val;
-------------------------------------------------------------------
(参照)EC-CUBE Trac
http://svn.ec-cube.net/open_trac/ticket/1502