セキュリティアドバイザリー

さまざまな X ヘッダーを利用するキャッシュポイズニング

2018年8月13日

概要

89 () 開催された Black Hat USA 2018 では、キャッシュインフラストラクチャ背後にデプロイされた Web サイトに対するキャッシュポイズニング攻撃に関するレポートが公表されました [1] 。このような攻撃では、攻撃者が任意のコンテンツを攻撃対象のキャッシュに挿入する可能性があります。

Fastly サービスで、ヘッダー間のインタラクションを考慮せずにバックエンドがコンテンツを選択するように設定されている場合、このような攻撃に対して脆弱な場合があります。このリスクは、VCL パッチを適用するか、またはバックエンドの設定を変更することによって十分に軽減できます。

詳細

1つまたは複数のバックエンドで HTTP レスポンスの送信先となるユーザー (またはセキュリティドメイン) 判断するのに X-Forwarded-HostX-Rewrite-Url、または X-Original-Url の HTTP リクエストヘッダーのコンテンツが使用される場合に、この種の脆弱性の影響受ける場合があります。サイトの Fastly 設定によってこのヘッダーがバックエンドに渡され、このヘッダーのコンテンツが (たとえば明示的に、または Vary HTTP レスポンスヘッダーによって) 有効なエッジキャッシュキーに含まれない場合、攻撃対象のキャッシュに挿入された任意のコンテンツを含むレスポンスがエッジに保存される可能性があります。

影響

攻撃者は、HTTP リクエストをサイトに送信し、影響を受けたバックエンドが攻撃者によってコントロールされたレスポンスを使用して応答するように仕掛けて Fastly のお客様の URL ポイズニングします。その結果、悪意のあるレスポンスオブジェクトが、サイトのキャッシュ内のポイズニングされた URL 保存されます。これにより、攻撃者は攻撃対象サイトのユーザーがポイズニングされた URLアクセスするよう誘導し、悪意のあるコンテンツを配信することができます。

対策

オリジンが特殊な値を使用してユーザーに配信するコンテンツを選択したり、複数のセキュリティドメインから選択する場合は、以下の対策を検討することを勧めします。

  • オリジンサーバーを再設定する [2]
  • 対応するセキュリティアップデートを適用する [3] [4] [5]
  • VCL でこれらの特殊な値を削除または正規化する

VCL ガイダンスに従って、脆弱性のあるヘッダーを既知の安全な値に設定するか、ヘッダーの設定を解除することを検討してください。たとえば、以下の VCL スニペットを使用して X-Forwarded-Host ヘッダーを Host ヘッダーの値に設定できます。

set req.http.x-forwarded-host = req.http.host;

以下の VCL スニペットを使用して X-Original-URL ヘッダーの設定を解除できます。

unset req.http.x-original-url;

また以下の VCL スニペットを使用して X-Rewrite-URL 設定を解除できます。

unset req.http.x-rewrite-url;

または、これらの値をキャッシュキー [6] Vary ヘッダー [7] 含めて、セキュリティドメインでコンテンツがキャッシュされないように設定することができます。エッジキャッシュキーの操作については、Fastly ドキュメント [6] 参照してください。

この攻撃によるリスクの可能性がある場合は、Fastly サポートチームが問題への対応または回避策の実施をサポートします。

以下の担当者までお問い合わせください。

関連するアドバイザリーおよびレポート

https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-14773

https://hackerone.com/reports/487

参照リンク

[1] https://portswigger.net/blog/practical-web-cache-poisoning

[2] https://github.com/rails/rails/issues/29893

[3] https://www.drupal.org/SA-CORE-2018-005

[4] https://symfony.com/cve-2018-14773

[5] https://framework.zend.com/security/advisory/ZF2018-01

[6] https://docs.fastly.com/jp/guides/manipulating-the-cache-key

[7] https://www.fastly.com/jp/blog/best-practices-using-vary-header

セキュリティアドバイザリーの購読お申し込み

入力いただいた情報は米国 Fastly 送信され、当社のプライバシーポリシー従って処理されます。内容を確認いただき、同意の「購読を申し込む」をクリックしてください。