【更新:2015年11月13日】
修正内容を追記。修正のプルリクエストを追記。
対象バージョンに2.13.4を追加
------------------------------------------------------------------
■脆弱性の種類
-------------------------------------------------------------------
クロスサイトリクエストフォージェリの脆弱性
-------------------------------------------------------------------
■不具合が存在するEC-CUBEのバージョン
-------------------------------------------------------------------
EC-CUBE 2.11.0〜2.13.4
-------------------------------------------------------------------
■修正方法について
-------------------------------------------------------------------
※詳細、修正ファイルのダウンロードはこちらをご確認ください
https://www.ec-cube.net/info/weakness/201510_02/
※下記のプルリクエストで修正
https://github.com/EC-CUBE/eccube-2_13/pull/66/commits
https://github.com/EC-CUBE/eccube-2_13/pull/70
以下は、2.13.3 の修正となっております。
/data/Smarty/templates/admin/basis/zip_install.tpl
/data/Smarty/templates/admin/mail/history.tpl
/data/Smarty/templates/admin/mail/template.tpl
/data/Smarty/templates/admin/ownersstore/log.tpl
/data/Smarty/templates/admin/order/subnavi.tpl
/data/Smarty/templates/admin/total/index.tpl
/data/Smarty/templates/admin/system/system.tpl
/data/class/pages/LC_Page.php::doValidToken
/data/class/helper/SC_Helper_Session.php::isValidToken
に以下の変更を加えます。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
=================================================================================================================
▽data/Smarty/templates/admin/basis/zip_install.tpl
81行目付近を変更下さい。
-----------------------------------------------------------------------------------------------------------------
変更前
-----------------------------------------------------------------------------------------------------------------
<iframe src="?mode=<!--{$tpl_mode|h}-->&exec=yes&startRowNum=<!--{$arrForm.startRowNum|h}-->" name="progress" height="200" width="750" frameborder="0"></iframe>
-------------------------------------------------------------------
-------------------------------------------------------------------
変更後
-------------------------------------------------------------------
<iframe src="?mode=<!--{$tpl_mode|h}-->&exec=yes&startRowNum=<!--{$arrForm.startRowNum|h}-->&<!--{$smarty.const.TRANSACTION_ID_NAME}-->=<!--{$transactionid}-->" name="progress" height="200" width="750" frameborder="0"></iframe>
=================================================================================================================
▽data/Smarty/templates/admin/mail/history.tpl
51行目付近を変更下さい。
-----------------------------------------------------------------------------------------------------------------
変更前
-----------------------------------------------------------------------------------------------------------------
<td><a href="#script tag escaped#;" onclick="eccube.openWindow('./preview.php?mode=history&send_id=<!--{$arrDataList[cnt].send_id|h}-->', 'confirm', '720', '600', {menubar:'no'}); return false;">確認</a></td>
<td><a href="#script tag escaped#;" onclick="eccube.openWindow('./<!--{$smarty.const.DIR_INDEX_PATH}-->?mode=query&send_id=<!--{$arrDataList[cnt].send_id|h}-->','query','615','800',{menubar:'no'}); return false;">確認</a></td>
-------------------------------------------------------------------
-------------------------------------------------------------------
変更後
-------------------------------------------------------------------
<td><a href="#script tag escaped#;" onclick="eccube.openWindow('./preview.php?mode=history&send_id=<!--{$arrDataList[cnt].send_id|h}-->&<!--{$smarty.const.TRANSACTION_ID_NAME}-->=<!--{$transactionid}-->', 'confirm', '720', '600', {menubar:'no'}); return false;">確認</a></td>
<td><a href="#script tag escaped#;" onclick="eccube.openWindow('./<!--{$smarty.const.DIR_INDEX_PATH}-->?mode=query&send_id=<!--{$arrDataList[cnt].send_id|h}-->&<!--{$smarty.const.TRANSACTION_ID_NAME}-->=<!--{$transactionid}-->','query','615','800',{menubar:'no'}); return false;">確認</a></td>
-------------------------------------------------------------------
63行目付近を変更下さい。
-----------------------------------------------------------------------------------------------------------------
変更前
-----------------------------------------------------------------------------------------------------------------
<a href="index.php?mode=retry&send_id=<!--{$arrDataList[cnt].send_id|h}-->" onclick="return window.confirm('未配信と配信失敗となった宛先に再送信を試みますか?');">実行</a>
-------------------------------------------------------------------
-------------------------------------------------------------------
変更後
-------------------------------------------------------------------
<a href="index.php?mode=retry&send_id=<!--{$arrDataList[cnt].send_id|h}-->&<!--{$smarty.const.TRANSACTION_ID_NAME}-->=<!--{$transactionid}-->" onclick="return window.confirm('未配信と配信失敗となった宛先に再送信を試みますか?');">実行</a>
-------------------------------------------------------------------
66行目付近を変更下さい。
-----------------------------------------------------------------------------------------------------------------
変更前
-----------------------------------------------------------------------------------------------------------------
<td><a href="?mode=delete&send_id=<!--{$arrDataList[cnt].send_id|h}-->" onclick="return window.confirm('配信履歴を削除しても宜しいでしょうか');">削除</a></td>
-------------------------------------------------------------------
-------------------------------------------------------------------
変更後
-------------------------------------------------------------------
<td><a href="?mode=delete&send_id=<!--{$arrDataList[cnt].send_id|h}-->&<!--{$smarty.const.TRANSACTION_ID_NAME}-->=<!--{$transactionid}-->" onclick="return window.confirm('配信履歴を削除しても宜しいでしょうか');">削除</a></td>
=================================================================================================================
=================================================================================================================
▽admin/mail/template.tpl
53行目付近を変更下さい。
-----------------------------------------------------------------------------------------------------------------
変更前
-----------------------------------------------------------------------------------------------------------------
<td><a href="./template_input.php?mode=edit&template_id=<!--{$arrTemplates[data].template_id}-->">編集</a></td>
<td><a href="#" onclick="eccube.moveDeleteUrl('?mode=delete&id=<!--{$arrTemplates[data].template_id}-->'); return false;">削除</a></td>
<td><a href="#" onclick="eccube.openWindow('./preview.php?mode=template&template_id=<!--{$arrTemplates[data].template_id}-->','preview','650','700',{menubar:'no'}); return false;" target="_blank">プレビュー</a></td>
-------------------------------------------------------------------
-------------------------------------------------------------------
変更後
-------------------------------------------------------------------
<td><a href="./template_input.php?mode=edit&template_id=<!--{$arrTemplates[data].template_id}-->&<!--{$smarty.const.TRANSACTION_ID_NAME}-->=<!--{$transactionid}-->">編集</a></td>
<td><a href="#" onclick="eccube.moveDeleteUrl('?mode=delete&id=<!--{$arrTemplates[data].template_id}-->&<!--{$smarty.const.TRANSACTION_ID_NAME}-->=<!--{$transactionid}-->'); return false;">削除</a></td>
<td><a href="#" onclick="eccube.openWindow('./preview.php?mode=template&template_id=<!--{$arrTemplates[data].template_id}-->&<!--{$smarty.const.TRANSACTION_ID_NAME}-->=<!--{$transactionid}-->','preview','650','700',{menubar:'no'}); return false;" target="_blank">プレビュー</a></td>
=================================================================================================================
=================================================================================================================
▽admin/ownersstore/log.tpl
45行目付近を変更下さい。
-----------------------------------------------------------------------------------------------------------------
変更前
-----------------------------------------------------------------------------------------------------------------
<a href="<!--{$smarty.const.ROOT_URLPATH}--><!--{$smarty.const.ADMIN_DIR}-->ownersstore/log.php?mode=detail&log_id=<!--{$log.log_id}-->">
-------------------------------------------------------------------
-------------------------------------------------------------------
変更後
-------------------------------------------------------------------
<a href="<!--{$smarty.const.ROOT_URLPATH}--><!--{$smarty.const.ADMIN_DIR}-->ownersstore/log.php?mode=detail&log_id=<!--{$log.log_id}-->&<!--{$smarty.const.TRANSACTION_ID_NAME}-->=<!--{$transactionid}-->">
=================================================================================================================
=================================================================================================================
▽admin/order/subnavi.tpl
27行目付近を変更下さい。
-----------------------------------------------------------------------------------------------------------------
変更前
-----------------------------------------------------------------------------------------------------------------
<li id="navi-order-add" class="<!--{if $tpl_mainno == 'order' && $tpl_subno == 'add'}-->on<!--{/if}-->"><a href="<!--{$smarty.const.ROOT_URLPATH}--><!--{$smarty.const.ADMIN_DIR}-->order/edit.php?mode=add"><span>受注登録</span></a></li>
-------------------------------------------------------------------
-------------------------------------------------------------------
変更後
-------------------------------------------------------------------
<li id="navi-order-add" class="<!--{if $tpl_mainno == 'order' && $tpl_subno == 'add'}-->on<!--{/if}-->"><a href="<!--{$smarty.const.ROOT_URLPATH}--><!--{$smarty.const.ADMIN_DIR}-->order/edit.php?mode=add&<!--{$smarty.const.TRANSACTION_ID_NAME}-->=<!--{$transactionid}-->"><span>受注登録</span></a></li>
=================================================================================================================
=================================================================================================================
▽admin/total/index.tpl
118行目付近を変更下さい。
-----------------------------------------------------------------------------------------------------------------
変更前
-----------------------------------------------------------------------------------------------------------------
<img src="?draw_image=true&type=<!--{$smarty.post.type|h}-->&mode=search&search_form=<!--{$smarty.post.search_form|h}-->&page=<!--{$smarty.post.page|h}-->&search_startyear_m=<!--{$smarty.post.search_startyear_m|h}-->&search_startmonth_m=<!--{$smarty.post.search_startmonth_m|h}-->&search_startyear=<!--{$smarty.post.search_startyear|h}-->&search_startmonth=<!--{$smarty.post.search_startmonth|h}-->&search_startday=<!--{$smarty.post.search_startday|h}-->&search_endyear=<!--{$smarty.post.search_endyear|h}-->&search_endmonth=<!--{$smarty.post.search_endmonth|h}-->&search_endday=<!--{$smarty.post.search_endday|h}-->" alt="グラフ" />
-------------------------------------------------------------------
-------------------------------------------------------------------
変更後
-------------------------------------------------------------------
<img src="?draw_image=true&type=<!--{$smarty.post.type|h}-->&mode=search&search_form=<!--{$smarty.post.search_form|h}-->&page=<!--{$smarty.post.page|h}-->&search_startyear_m=<!--{$smarty.post.search_startyear_m|h}-->&search_startmonth_m=<!--{$smarty.post.search_startmonth_m|h}-->&search_startyear=<!--{$smarty.post.search_startyear|h}-->&search_startmonth=<!--{$smarty.post.search_startmonth|h}-->&search_startday=<!--{$smarty.post.search_startday|h}-->&search_endyear=<!--{$smarty.post.search_endyear|h}-->&search_endmonth=<!--{$smarty.post.search_endmonth|h}-->&search_endday=<!--{$smarty.post.search_endday|h}-->&<!--{$smarty.const.TRANSACTION_ID_NAME}-->=<!--{$transactionid}-->" alt="グラフ" />
=================================================================================================================
=================================================================================================================
▽admin/system/system.tpl
40行目付近を変更下さい。
-----------------------------------------------------------------------------------------------------------------
変更前
-----------------------------------------------------------------------------------------------------------------
<iframe src="?mode=info" height="500" frameborder="0" style="width: 100%;"></iframe>
-------------------------------------------------------------------
-------------------------------------------------------------------
変更後
-------------------------------------------------------------------
<iframe src="?mode=info&<!--{$smarty.const.TRANSACTION_ID_NAME}-->=<!--{$transactionid}-->" height="500" frameborder="0" style="width: 100%;"></iframe>
=================================================================================================================
=================================================================================================================
▽LC_Page.php::doValidToken
439行目付近を変更下さい。
※2.11系では SC_Response_Ex::actionExit(); は不要です。
-----------------------------------------------------------------------------------------------------------------
変更前
-----------------------------------------------------------------------------------------------------------------
public function doValidToken($is_admin = false)
{
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (!SC_Helper_Session_Ex::isValidToken(false)) {
if ($is_admin) {
SC_Utils_Ex::sfDispError(INVALID_MOVE_ERRORR);
} else {
SC_Utils_Ex::sfDispSiteError(PAGE_ERROR, '', true);
}
SC_Response_Ex::actionExit();
}
}
}
-------------------------------------------------------------------
-------------------------------------------------------------------
変更後
-------------------------------------------------------------------
public function doValidToken($is_admin = false)
{
if ($is_admin) {
$mode = $this->getMode();
if ($_SERVER['REQUEST_METHOD'] == 'POST' || !SC_Utils::isBlank($mode)) {
if (!SC_Helper_Session_Ex::isValidToken(false)) {
SC_Utils_Ex::sfDispError(INVALID_MOVE_ERRORR);
SC_Response_Ex::actionExit();
}
}
} else {
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (!SC_Helper_Session_Ex::isValidToken(false)) {
SC_Utils_Ex::sfDispSiteError(PAGE_ERROR, '', true);
SC_Response_Ex::actionExit();
}
}
}
}
=================================================================================================================
=================================================================================================================
▽SC_Helper_Session.php::isValidToken
203行目付近を変更下さい。
-----------------------------------------------------------------------------------------------------------------
変更前
-----------------------------------------------------------------------------------------------------------------
public function isValidToken($is_unset = false)
{
// token の妥当性チェック
$ret = $_REQUEST[TRANSACTION_ID_NAME] === $_SESSION[TRANSACTION_ID_NAME];
if ($is_unset || $ret === false) {
SC_Helper_Session_Ex::destroyToken();
}
return $ret;
}
-------------------------------------------------------------------
-------------------------------------------------------------------
変更後
-------------------------------------------------------------------
public function isValidToken($is_unset = false)
{
// token の妥当性チェック
$ret = $_REQUEST[TRANSACTION_ID_NAME] === $_SESSION[TRANSACTION_ID_NAME];
if (empty($_REQUEST[TRANSACTION_ID_NAME]) || empty($_SESSION[TRANSACTION_ID_NAME])) {
$ret = false;
}
if ($is_unset || $ret === false) {
SC_Helper_Session_Ex::destroyToken();
}
return $ret;
}
=================================================================================================================
-------------------------------------------------------------------
■修正後の確認方法について
-------------------------------------------------------------------
以下を御確認ください。
・郵便番号DB登録が行えること。
・メルマガ管理>配信履歴、テンプレート設定の各機能が利用できること。
・オーナーズストア>ログ管理の詳細が確認できること
・売上集計のグラフが表示されること
・受注登録ページ、システム情報ページに遷移できること
・カスタマイズにより追加した管理画面の画面に遷移できること
====================================================================