脆弱性

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公式アドバイザー
ご相談窓口

  • 他社のASPやパッケージとの違いを知りたい
  • BtoCのサイトにBtoB機能を追加したい
  • 何から手をつければよいかわからない
  • オープンソースならではの注意事項を知りたい
  • 自社にマッチした制作会社を探したい
  • サイト制作だけでなく運営もサポートしてほしい

新規構築・リニューアル・取引先向けのWeb受発注システム(BtoB)や事業の拡大など、
今抱えている課題を解決する最適な業者探しを、アドバイザーがお手伝いします。