脆弱性

SQLインジェクション

  • 情報公開日:2011年 10月 12日
  • 危険度:中
  • 対象:Ver 2.11.0~2.11.2
-------------------------------------------------------------------
■脆弱性の種類
-------------------------------------------------------------------
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

EC-CUBE® DemoSite

デモサイトで体験

最新ニュースやECノウハウをお届けします