2022年2月に公開されている「HTTP Hostヘッダの処理に脆弱性 (JVN#53871926)」について解説します。
この脆弱性は公式サイトでは「リスク低」となっていますが、サイトから送るメールのURLを別サイトのドメインに書き換え誘導される可能性があるためすぐ修正すべき脆弱性です。
例:メール認証やパスワード再発行メールのドメインを書き換えてユーザーに送る
HTTP Hostヘッダとは?
クライアントがリクエストを送信する際に、どのサーバーやドメインにリクエストを送りたいかを指定するためのHTTPリクエストヘッダです。
リクエストヘッダは送信者が自由に指定できるということがポイントです。そのため悪意のあるヘッダを送信される可能性があります。
本脆弱性の概要
攻撃者によりHostヘッダを書き換えてリクエストされると、別サイトへのリンクを生み出してしまうという脆弱性です。
Symfonyではサイト内でリンクを生成する際にこのHostヘッダを使用する仕様になっています。
そのため、Hostに対して適切な検証を行う必要があります。それが.envなどで指定できるTRUSTED_HOSTSといった変数です。
また、そもそもTRUSTED_HOSTSを指定していない場合、ウェブサーバーの設定によっては攻撃者が指定したドメインでサイトにアクセスできる可能性があり、リスクが高まります。
脆弱性修正の難易度について
脆弱性の修正は4系であれば.env、3系であればindex.phpなどでTRUSTED_HOSTSを設定して行うことができます。
wwwの有無など複数のドメインでアクセスできる場合は、正規表現で指定する必要があるかもしれません。(リダイレクトしている場合でも両方指定が必要です)
また、修正されているかどうかの動作確認はHostヘッダを書き換えたリクエストを送る必要があり難しいものだと思います。
EC-CUBEに関するお問い合わせ
[重要]現在公式にセキュリティサポートが切れていないPHPは8.1以上、MySQLは8.0以上で、対応しているEC-CUBEバージョンは4.2以上です。古いEC-CUBEを使っている方は適切なタイミングでバージョンアップをご検討ください。