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

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

2018年8月13日

概要


8月9日 (木) に開催された 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 に送信され、当社のプライバシーポリシーに従って処理されます。内容をご確認いただき、同意の上「購読を申し込む」をクリックしてください。

Fastly試してみませんか ?

アカウントを作成してすぐにご利用いただけます。また、いつでもお気軽にお問い合わせください。