[eccube] 危険度の高い脆弱性が報告されましたので修正を(2014年01月21日)

2014年01月21日に脆弱性に報告と修正パッチが公開されました。対象のバージョンと修正箇所等は以下。

脆弱性の種類

個人情報削除の脆弱性 と 個人情報漏えいの脆弱性

修正が必要なECCUBEのバージョン

バージョン2.11.0〜2.12.2 (2.11.0〜2.12.2(2.11.0 / 2.11.1 / 2.11.2 / 2.11.3 / 2.11.4 / 2.11.5 / 2.12.0 / 2.12.1 / 2.12.2) の場合は以下の2ファイル(計3箇所)の修正を行ってください。

それ以外のバージョン(2.12.2 以前、2.4.4以前)は下記URLも参考に。

・参考1:http://www.ec-cube.net/info/weakness/weakness.php?id=56
・参考2:http://www.ec-cube.net/info/weakness/weakness.php?id=57

※2013年2月に公開されたVer 2.12.2 以上は特に修正の必要はありません。

修正(1)

■対象ファイル

/data/class/pages/shopping/LC_Page_Shopping_Deliv.php

■修正内容(1):107行目付近

【修正前】

$arrForm = $objFormParam->getHashArray();

switch ($this->getMode()) {

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

【修正後】

$arrForm = $objFormParam->getHashArray();

if (!$this->doCheck($arrForm, $objCustomer)) {
    SC_Utils_Ex::sfDispSiteError(PAGE_ERROR, '', true);
}

switch ($this->getMode()) {

■修正内容(2):最終行付近

【修正前】

        // お届け先チェックが不正な場合
        else {
            return false;
        }
    }
}
?>

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

【修正後】

        // お届け先チェックが不正な場合
        else {
            return false;
        }
    }
function doCheck($arrForm, &$objCustomer) {
     $objQuery =& SC_Query_Ex::getSingletonInstance();
     if (empty($arrForm['other_deliv_id'])) {
         $result = 1;
     }
     else {
         $where = 'other_deliv_id = ? AND customer_id = ?';
         $result = $objQuery->count('dtb_other_deliv', $where, array($arrForm['other_deliv_id'], $objCustomer->getValue('customer_id')));
     }

     return $result;
 }
}
?>

修正(2)

■対象ファイル

/data/class/pages/shopping/LC_Page_Shopping_Multiple.php

■修正内容:209行目付近

【修正前】

function lfCheckError(&$objFormParam) {
$objFormParam->convParam();
return $objFormParam->checkError();
}

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

【修正後】




function lfCheckError(&$objFormParam) {
$objQuery    =& SC_Query_Ex::getSingletonInstance();
$objCustomer = new SC_Customer_Ex();
$objFormParam->convParam();
$arrErr = $objFormParam->checkError();
$arrParams = $objFormParam->getSwapArray(array(‘shipping’));
if ($objCustomer->isLoginSuccess(true) && SC_Utils_Ex::isBlank($arrErr)) {
$deliv_check_flg = true;
foreach ($arrParams as $index => $arrParam) {
if ($arrParam[‘shipping’] != 0) {
$deliv_check = $objQuery->count(‘dtb_other_deliv’,’other_deliv_id = ? AND customer_id = ?’, array($arrParam[‘shipping’], $objCustomer->getValue(‘customer_id’)));
if ($deliv_check < 1) {
$deliv_check_flg = false;
break;
}
}
}
if (!$deliv_check_flg) {
SC_Utils_Ex::sfDispSiteError(PAGE_ERROR, '', true);
exit;
}
}
return $arrErr;
}
[/php]



脆弱性リスト

eccube管理者は脆弱性リストを頻繁にチェックするようにしてください。

http://www.ec-cube.net/info/weakness/

Similar posts