-------------------------------------------------------------------
■脆弱性の種類
-------------------------------------------------------------------
ディレクトリトラバーサルに関する脆弱性
-------------------------------------------------------------------
■不具合が発生する環境
-------------------------------------------------------------------
Windowsサーバーを利用している環境
-------------------------------------------------------------------
■不具合が存在するEC-CUBEのバージョン
-------------------------------------------------------------------
EC-CUBE 2.12.0 以降
2.12.0
2.12.1
2.12.2
2.12.3
2.12.3en.p1
2.12.3en.p2
2.12.4
2.12.4en
2.12.5
2.12.5en
-------------------------------------------------------------------
■修正方法について(以下は Ver2.12.5 の修正となっております。)
-------------------------------------------------------------------
data/class/api/SC_Api_Operation.php::doApiAction
に以下の変更を加えます。
※修正ファイルの詳細はこちらをご確認ください
http://www.ec-cube.net/info/weakness/20130829/index.php
▽SC_Api_Operation.php
関数追加
-----------------------------------------------------------------------------------------------------------------
追加
-----------------------------------------------------------------------------------------------------------------
/**
* APIのリクエスト基本パラメーターのチェック
*
* @param object $objFormParam
* @return array $arrErr
*/
protected function checkParam($objFormParam)
{
$arrErr = $objFormParam->checkError();
if (!preg_match("/^[a-zA-Z0-9\-\_]+$/", $objFormParam->getValue('Operation')) && !SC_Utils::isBlank($objFormParam->getValue('Operation'))) {
$arrErr['ECCUBE.Operation.ParamError'] = 'Operationの値が不正です。';
}
if (!preg_match("/^[a-zA-Z0-9\-\_]+$/", $objFormParam->getValue('Service')) && !SC_Utils::isBlank($objFormParam->getValue('Service'))) {
$arrErr['ECCUBE.Service.ParamError'] = 'Serviceの値が不正です。';
}
if (!preg_match("/^[a-zA-Z0-9\-\_]+$/", $objFormParam->getValue('Style')) && !SC_Utils::isBlank($objFormParam->getValue('Style'))) {
$arrErr['ECCUBE.Style.ParamError'] = 'Styleの値が不正です。';
}
if (!preg_match("/^[a-zA-Z0-9\-\_]+$/", $objFormParam->getValue('Validate')) && !SC_Utils::isBlank($objFormParam->getValue('Validate'))) {
$arrErr['ECCUBE.Validate.ParamError'] = 'Validateの値が不正です。';
}
if (!preg_match("/^[a-zA-Z0-9\-\_\.]+$/", $objFormParam->getValue('Version')) && !SC_Utils::isBlank($objFormParam->getValue('Version'))) {
$arrErr['ECCUBE.Version.ParamError'] = 'Versionの値が不正です。';
}
return $arrErr;
}
=================================================================================================================
下記のリビジョンで修正
http://svn.ec-cube.net/open_trac/changeset/22891