EC-CUBEにおける HTTP Hostヘッダの処理に脆弱性 (JVN#53871926)

更新履歴
2022/03/01 10:00
「EC-CUBE 4系での修正方法」に、TRUSTED_HOSTSの設定例を追加
2022/02/22 18:00
「EC-CUBE 4系での修正方法」に、TRUSTED_HOSTSがコメントアウトされている場合の対応を追加
2022/02/22 16:00
「脆弱性の概要」に、JVNからの公表内容情報へのリンクを追加
2022/02/21 10:00
脆弱性の名称を「EC-CUBEにおける HTTP Hostヘッダの処理に脆弱性」に変更
※脆弱性の名称のみの変更です。脆弱性の内容や危険度等に変更はありません。
2022/02/19 10:00
脆弱性の名称を「動的に管理されたコードリソースの不適切な制御に関する脆弱性」へ変更
※脆弱性の名称のみの変更です。脆弱性の内容や危険度等に変更はありません。
2022/02/09 13:00
パートナー向けの事前告知としてページ公開

EC-CUBEにおける HTTP Hostヘッダの処理に脆弱性

EC-CUBE 3系, 4系にHTTP Hostヘッダの処理に脆弱性(緊急度: 低)があることが判明いたしました。

脆弱性そのものは、設定の変更(4系) または、修正差分の反映(3系) によりすぐに解決するものです。
以下のいずれかの方法により、ご対応をお願いいたします。

皆様にはお手数おかけし誠に申し訳ございません。
本脆弱性における被害報告は現時点でございませんが、できるだけ速やかにご対応をお願いいたします。

脆弱性の概要

EC-CUBEにおける HTTP Hostヘッダの処理に脆弱性

危険度:

不具合が存在するEC-CUBEのバージョン:

詳細:

EC-CUBEに対するリクエストの Hostヘッダを改変することで、正規でないURLが生成される脆弱性。


JVNからの公表内容 (2022/02/22公開)

JVN#53871926: EC-CUBE における HTTP Host ヘッダの処理に脆弱性

EC-CUBE 4系での修正方法:

環境変数または .env ファイルにて、TRUSTED_HOSTS にご利用のホスト名を正規表現で設定してください。

.env での TRUSTED_HOSTS の記載例

# サブドメインありの場合
TRUSTED_HOSTS=^www\.example\.com$

# サブドメインなしの場合
TRUSTED_HOSTS=^example\.com$

# 複数指定時はカンマ区切りで設定
TRUSTED_HOSTS=^www\.example\.com$,^example\.com$

TRUSTED_HOSTS がコメントアウトされている場合、コメントアウトを外してから設定してください。.env変更後、キャッシュの削除は不要です。

ホスト名はブラウザでアクセスする際のドメイン部分を記載してください(https://www.ec-cube.net/の場合は「www.ec-cube.net」)

※ なお、EC-CUBE 4.1.2以降では TRUSTED_HOSTS はインストール時に自動で設定されます。

EC-CUBE 3系での修正方法

下記のコード差分情報を参照して頂き、必要な箇所に修正を反映してください。

本修正方法はEC-CUBE 3.0.18-p3のバージョンを例として提示しております。
下記修正対象ファイルの修正差分を参考にご対応お願いいたします。
(現状3系では3.0.18-p3が最新版です。以前発見された脆弱性対応も含めるためには、最新版へのアップデートからのご対応を推奨いたします。)

修正対象ファイル

以下の2ファイルとなります。

修正差分

差分中の '^www\.example\.com$' の部分を、ご使用になるホスト名の正規表現に書き換えてください。

html/index.php CHANGED
@@ -51,6 +51,7 @@ $app = \Eccube\Application::getInstance(array('output_config_php' => false));
51
51
  if (isset($app['config']['eccube_install']) && $app['config']['eccube_install']) {
52
52
  $app->initialize();
53
53
  $app->initializePlugin();
54
+ \Symfony\Component\HttpFoundation\Request::setTrustedHosts(array('^www\.example\.com$'));
54
55
  if ($app['config']['http_cache']['enabled']) {
55
56
  $app['http_cache']->run();
56
57
  } else {
html/index_dev.php CHANGED
@@ -104,4 +104,5 @@ $app->register(new \Eccube\ServiceProvider\DebugServiceProvider());
104
104
 
105
105
  $app->register(new \Saxulum\SaxulumWebProfiler\Provider\SaxulumWebProfilerProvider());
106
106
 
107
+ \Symfony\Component\HttpFoundation\Request::setTrustedHosts(array('^www\.example\.com$'));
107
108
  $app->run();

問い合わせ先

本脆弱性に関するお問合せ:

EC-CUBE 運営チーム
MAIL: [email protected]