脆弱性

カート画面でのXSS脆弱性、及びセッション固定の脆弱性

  • 情報公開日:2013年 05月 22日
  • 危険度:中
  • 対象:Ver 2.11.0以降(2.11.0 ~2.12.3)
-------------------------------------------------------------------
■脆弱性の種類
-------------------------------------------------------------------
クロスサイトスクリプティング、及びセッション固定に関する脆弱性


-------------------------------------------------------------------
■不具合が存在するEC-CUBEのバージョン
-------------------------------------------------------------------
EC-CUBE 2.11.0 以降 (2011年3月23日公開~)

-------------------------------------------------------------------
■修正方法について(以下は Ver2.12.3 の修正となっております。)
-------------------------------------------------------------------
/data/class/pages/cart/LC_Page_Cart.php::action
に以下の変更を加えます。

※修正ファイルの詳細はこちらをご確認ください
http://www.ec-cube.net/info/weakness/20130522/index.php

▽LC_Page_Cart.php
89行目付近
-----------------------------------------------------------------------------------------------------------------
 変更前
-----------------------------------------------------------------------------------------------------------------
$objFormParam = $this->lfInitParam($_REQUEST); 
-----------------------------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------------------------
 変更後
-----------------------------------------------------------------------------------------------------------------
$objFormParam = $this->lfInitParam($_POST); 
-----------------------------------------------------------------------------------------------------------------


▽LC_Page_Cart.php
91行目付近
-----------------------------------------------------------------------------------------------------------------
 変更前
-----------------------------------------------------------------------------------------------------------------
$this->mode = $this->getMode(); 

$this->cartKeys = $objCartSess->getKeys(); 
-----------------------------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------------------------
 変更後
-----------------------------------------------------------------------------------------------------------------
$this->mode = $this->getMode(); 
 
// モバイル対応 
if(SC_Display_Ex::detectDevice() == DEVICE_TYPE_MOBILE) { 
    if(isset($_GET['cart_no'])) $objFormParam->setValue('cart_no', $_GET['cart_no']); 
    if(isset($_GET['cartKey'])) $objFormParam->setValue('cartKey', $_GET['cartKey']); 
}


$this->cartKeys = $objCartSess->getKeys(); 
-----------------------------------------------------------------------------------------------------------------


▽LC_Page_Cart.php
91行目付近
-----------------------------------------------------------------------------------------------------------------
 変更前
-----------------------------------------------------------------------------------------------------------------

$cart_no = $objFormParam->getValue('cart_no'); 
$cartKey = $objFormParam->getValue('cartKey'); 

switch ($this->mode) { 
-----------------------------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------------------------
 変更後
-----------------------------------------------------------------------------------------------------------------

$cart_no = $objFormParam->getValue('cart_no'); 
$cartKey = $objFormParam->getValue('cartKey'); 

// エラーチェック 
$arrError = $objFormParam->checkError(); 
if(isset($arrError) && !empty($arrError)) { 
    SC_Utils_Ex::sfDispSiteError(CART_NOT_FOUND); 
    SC_Response_Ex::actionExit(); 
} 

switch ($this->mode) { 
-----------------------------------------------------------------------------------------------------------------


▽LC_Page_Cart.php
215行目付近(※2.11.0,2.11.1では対応不要となります。)
-----------------------------------------------------------------------------------------------------------------
 変更前
-----------------------------------------------------------------------------------------------------------------
$objFormParam->addParam('数量', 'quantity', INT_LEN, 'n', array('EXIST_CHECK', 'ZERO_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK'));
-----------------------------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------------------------
 変更後
-----------------------------------------------------------------------------------------------------------------
$objFormParam->addParam('数量', 'quantity', INT_LEN, 'n', array('ZERO_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK'));
-----------------------------------------------------------------------------------------------------------------

下記のリビジョンで修正
http://svn.ec-cube.net/open_trac/changeset/22604
http://svn.ec-cube.net/open_trac/changeset/22804
http://svn.ec-cube.net/open_trac/changeset/22805

EC-CUBE公式アドバイザー
無料ご相談窓口

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

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