Headline
CVE-2023-25077: EC-CUBE 4系におけるクロスサイトスクリプティングの脆弱性(JVN#04785663)
Cross-site scripting vulnerability in Authentication Key Settings of EC-CUBE 4.0.0 to 4.0.6-p2, EC-CUBE 4.1.0 to 4.1.2-p1, and EC-CUBE 4.2.0 allows a remote authenticated attacker to inject an arbitrary script.
更新履歴
2023/02/28 11:00
謝辞を追加
2023/02/17 11:30
【重要】修正ファイル(4.2.0用、4.1.2-p1用、4.0.6-p2用の3点)の内容に不具合がありましたので、ファイルを更新いたしました。
公開されていた時間:2023/02/14 17:00 〜 2023/02/17 11:30 上記時間帯にファイルの適応を行った方は、再度のご確認と修正対応をお願いいたします。 なお、誤ったファイルを適用していた場合でも、脆弱性そのものの修正は行われています。
2023/02/16 18:00
【重要】修正ファイルに不具合を確認
修正ファイルにより脆弱性は解消されますが、ファイル管理画面のサムネイルが一部表示されなくなる不具合があり、新しい修正ファイルを準備中です。
2023/02/14 17:00
初版公開
EC-CUBEにおけるクロスサイトスクリプティングの脆弱性
EC-CUBE 4.0系、4.1系、4.2系におけるクロスサイトスクリプティングの脆弱性(危険度: 低)があることが判明いたしました
脆弱性そのものは、修正の反映によりすぐに解決するものです。
以下のいずれかの方法により、ご対応をお願いいたします。
- 修正ファイルを適用する
- 修正差分を確認して適用する
皆様にはお手数おかけし誠に申し訳ございません。
本脆弱性における被害報告は現時点でございませんが、できるだけ速やかにご対応をお願いいたします。
脆弱性の概要****EC-CUBEにおけるクロスサイトスクリプティングの脆弱性****危険度:
低
不具合が存在するEC-CUBEのバージョン:
- 4.0.0〜4.0.6-p2
- 4.1.0〜4.1.2-p1
- 4.2.0
詳細:
EC-CUBEにはXSSの脆弱性が存在します。攻撃者は当該脆弱性を悪用して、被害者のブラウザ上で任意のスクリプトを実行させる可能性があります。
JVNからの公表内容 (2022/02/28公開)
JVN#04785663: EC-CUBE における複数のクロスサイトスクリプティングの脆弱性
- コンテンツ管理におけるクロスサイトスクリプティング CVE-2023-22438
- 認証キー設定におけるクロスサイトスクリプティング CVE-2023-25077
- 商品一覧および商品詳細におけるクロスサイトスクリプティング CVE-2023-22838
修正方法1: 修正ファイルを利用する場合
開発環境がある場合は、まず開発環境でお試しください。
以下の手順に従って、修正ファイルの反映をお願いいたします。
修正ファイルのダウンロード
ご利用中のEC-CUBEのバージョンに該当する修正ファイルをダウンロードしてください。
※EC-CUBEのバージョンはこちらの手順でご確認ください。
※修正ファイルは各バージョンの最新版に対して作成しています。旧バージョンをご利用の場合は、「修正方法2」のご対応をお願いします。- 修正ファイル(4.0.6-p2用) (SHA256:478a0af625137aa49133d294357fa23861425ea75289a2b77c93a084c382e1ac)
- 修正ファイル(4.1.2-p1用) (SHA256:0a2a75c27079936c455733d1d7276b181b34299630639ae320899828836a0fec)
- 修正ファイル(4.2.0用) (SHA256:b4152653e71a1bcb36ef6e01946702f915b63c1ce93182051ca9818f030a9a12)
ダウンロードし、解凍していただきますと、以下の修正ファイルがあります。必ず該当するバージョンのファイルをご利用ください。
- src/Eccube/Resource/template/admin/Store/authentication_setting.twig
- src/Eccube/Resource/template/admin/Store/plugin_confirm.twig
- src/Eccube/Resource/template/default/Product/detail.twig
- src/Eccube/Resource/template/default/Product/list.twig
- src/Eccube/Resource/template/admin/Content/file.twig
EC-CUBEファイルのバックアップ
あらかじめEC-CUBEファイル全体のバックアップを行ってください。
※作業中はメンテナンスモードに切り替えることをおすすめします。修正ファイルの反映
以下のファイルを上書き更新してください。
上書きするファイル
- src/Eccube/Resource/template/admin/Store/authentication_setting.twig
- src/Eccube/Resource/template/admin/Store/plugin_confirm.twig
- src/Eccube/Resource/template/default/Product/detail.twig
- src/Eccube/Resource/template/default/Product/list.twig
- src/Eccube/Resource/template/admin/Content/file.twig
下記にファイルが存在する場合は同様に上書きをお願いします
- app/template/admin/Store/authentication_setting.twig
- app/template/admin/Store/plugin_confirm.twig
- app/template/default/Product/detail.twig
- app/template/default/Product/list.twig
- app/template/admin/Content/file.twig
※EC-CUBE本体のカスタマイズをしている場合、修正箇所の差分をご確認のうえ反映をお願いします。
※開発環境がある場合は、開発環境での反映・動作確認を行った後に、本番環境への反映をおすすめします。キャッシュの削除
EC-CUBE のキャッシュの削除が必要です。
EC-CUBE の管理画面にログインいただき、コンテンツ管理 -> キャッシュ管理 のページからキャッシュの削除をお願いいたします動作確認
管理画面にログインし、基本操作が正常に行えることをご確認ください。
※メンテナンスモードにされていた場合は解除をお願いします。
修正方法2: 修正差分を確認して適宜反映する場合(4系)
以下のコード差分情報を参照して頂き、必要な箇所に修正を反映してください。
本修正方法はEC-CUBE 4.2.0のバージョンを例として提示しております。
過去バージョンをご利用の場合は、下記修正対象ファイルの修正差分を参考にご対応お願いいたします。
※4.0, 4.1, 4.2それぞれのファイル差分は同一です修正差分
- src/Eccube/Resource/template/admin/Content/file.twig +2 -2
- src/Eccube/Resource/template/admin/Store/authentication_setting.twig +1 -1
- src/Eccube/Resource/template/admin/Store/plugin_confirm.twig +2 -2
- src/Eccube/Resource/template/default/Product/detail.twig +1 -1
- src/Eccube/Resource/template/default/Product/list.twig +1 -1
@@ -167,14 +167,14 @@ file that was distributed with this source code.
167
167
{% endif %}
168
168
{% for file in arrFileList %}
169
169
<tr id="{{ loop.index }}">
170
- <td class="align-middle text-center" onDblClick="eccube.fileManager.setTreeStatus(‘tree_status’);eccube.fileManager.doubleClick(arrTree, '{{ file.file_path }}’, {% if file.is_dir %}true{% else %}false{% endif %}, '{{ tpl_now_dir }}’, false)">
170
- <td class="align-middle text-center">
171
171
{% if file.is_dir %}
172
172
<i class="fa fa-folder-o fa-2x"></i>
173
173
{% else %}
174
174
{% if file.extension|file_ext_icon({}, true) == ‘fa-file-image-o’ %}
175
175
<div class="d-inline-block p-3 bg-light"
176
176
style="background: no-repeat center center;
177
- background-image: url('{{ asset(‘’, ‘user_data’) }}{{ file.file_path|slice(1) }}’);
177
- background-image: url(‘{{ asset(file.file_path|slice(1)|escape(‘css’), ‘user_data’) }}’);
178
178
background-size: contain; width: 49px; height: 57px;">
179
179
</div>
180
180
{% else %}
@@ -63,7 +63,7 @@ file that was distributed with this source code.
63
63
"captcha": $(‘#captcha_text’).val(),
64
64
"eccube_url": '{{ eccubeUrl }}’,
65
65
"eccube_version": "{{ constant(‘Eccube\\Common\\Constant::VERSION’) }}",
66
- "eccube_shop_name": “{{ eccubeShopName }}”
66
- "eccube_shop_name": “{{ eccubeShopName|escape(‘js’) }}”
67
67
}
68
68
}).done(function(data) {
69
69
$(‘#captcha’).modal(‘hide’);
@@ -101,12 +101,12 @@ $(function() {
101
101
relatedTarget = $(e.relatedTarget);
102
102
mode = MODES[relatedTarget.data(‘mode’)];
103
103
$('.modal-title’, modal).text(mode.name + ‘確認’);
104
- message.text(‘「{{ item.name }} ({{ item.version }})」を’ + mode.name + ‘しますか?’);
104
- message.text(‘「{{ item.name|escape(‘js’) }} ({{ item.version }})」を’ + mode.name + ‘しますか?’);
105
105
$(‘#installBtn’).text(mode.name);
106
106
});
107
107
108
108
$(‘#installBtn’).on('click’, function() {
109
- message.text(‘「{{ item.name }} ({{ item.version }})」を’ + mode.name + ‘中。この処理には数分かかる場合があります。画面をリロードせずにこのままお待ち下さい。’);
109
- message.text(‘「{{ item.name|escape(‘js’) }} ({{ item.version }})」を’ + mode.name + ‘中。この処理には数分かかる場合があります。画面をリロードせずにこのままお待ち下さい。’);
110
110
var footer = $('div.modal-footer’, modal).hide();
111
111
var progress = $('div.progress’, modal).show();
112
112
var statusBar = $(‘#installStatus’).text(‘’);
@@ -218,7 +218,7 @@ file that was distributed with this source code.
218
218
}).done(function(data) {
219
219
// レスポンス内のメッセージをalertで表示
220
220
$.each(data.messages, function() {
221
- $(‘#ec-modal-header’).html(this);
221
- $(‘#ec-modal-header’).text(this);
222
222
});
223
223
224
224
$(‘.ec-modal’).show()
@@ -65,7 +65,7 @@ file that was distributed with this source code.
65
65
}).done(function(data) {
66
66
// レスポンス内のメッセージをalertで表示
67
67
$.each(data.messages, function() {
68
- $(‘#ec-modal-header’).html(this);
68
- $(‘#ec-modal-header’).text(this);
69
69
});
70
70
71
71
$(‘.ec-modal’).show()
問い合わせ先
本脆弱性に関するお問合せ:
EC-CUBE 運営チーム
MAIL: [email protected]
謝辞
本脆弱性は、
コンテンツ管理におけるクロスサイトスクリプティング CVE-2023-22438
- 三井物産セキュアディレクション株式会社 望月岳 様・白倉大河 様
- 株式会社ブロードバンドセキュリティ 志賀 拓馬 様
認証キー設定におけるクロスサイトスクリプティング CVE-2023-25077
- 株式会社サイバーディフェンス研究所 岩崎 徳明 様
商品一覧および商品詳細におけるクロスサイトスクリプティング CVE-2023-22838
- 日本工業大学 データサイエンス学科 橋浦研究室 高橋 黎 様
よりご報告いただきました。
この場をお借りして、厚く御礼申し上げます。
Related news
Cross-site scripting vulnerability in Contents Management of EC-CUBE 4 series (EC-CUBE 4.0.0 to 4.0.6-p2, EC-CUBE 4.1.0 to 4.1.2-p1, and EC-CUBE 4.2.0), EC-CUBE 3 series (EC-CUBE 3.0.0 to 3.0.18-p5), and EC-CUBE 2 series (EC-CUBE 2.11.0 to 2.11.5, EC-CUBE 2.12.0 to 2.12.6, EC-CUBE 2.13.0 to 2.13.5, and EC-CUBE 2.17.0 to 2.17.2) allows a remote authenticated attacker to inject an arbitrary script.