脆弱性
キャッシュ汚染
別称: Web キャッシュ汚染, レスポンス汚染
定義
共有キャッシュに悪意あるレスポンスを保存させ、以降の他ユーザーに攻撃者のコンテンツを配信する攻撃。
キャッシュ汚染は、CDN、リバースプロキシ、ブラウザ、DNS リゾルバなどのキャッシュ層を悪用して、攻撃者の制御下にあるコンテンツを保持させる手法です。Web キャッシュ汚染では、レスポンスに影響するがキャッシュキーに含まれない入力(unkeyed input)を悪用することが多く、汚染されたレスポンスが以後の閲覧者に配信されます。バリエーションには DNS キャッシュ汚染、アプリ層のキャッシュ汚染、キャッシュデセプションがあります。改ざんや XSS のばらまきから、認証情報の窃取・認証バイパスまで影響は広範です。対策には、関連入力をキャッシュキーに含める、エッジでのリクエスト正規化、キャッシュ可能なコンテンツタイプの制限、Vary・Cache-Control の監査などがあります。
例
- X-Forwarded-Host ヘッダがアプリで <script> タグに反映される挙動を悪用し、CDN を汚染する。
- 攻撃者の制御する Location を持つ 302 をキャッシュさせ、全ての訪問者に配信する。
関連用語
HTTP リクエストスマグリング
前段プロキシとバックエンドサーバーで HTTP リクエストの終端解釈が食い違うことを悪用し、攻撃者が隠しリクエストを送り込めるようにする攻撃。
HTTP デシンク攻撃
プロキシとサーバーのチェーンを意図的に非同期化し、他ユーザーの接続に悪意あるトラフィックを注入する、HTTP リクエストスマグリングの現代的形態。
Web キャッシュデセプション
悪意ある URL によって、中間キャッシュが被害者の認証済みの機微なレスポンスを公開可能なパスとして保存してしまう攻撃。
DNS キャッシュポイズニング
DNS リゾルバのキャッシュに偽造レコードを挿入し、TTL が切れるまで以降の問い合わせが攻撃者指定のアドレスを返すようにする攻撃。
Host ヘッダインジェクション
アプリが HTTP Host ヘッダ(または X-Forwarded-Host)を信用して URL を組み立てることにより、攻撃者がリダイレクトやキャッシュ汚染を引き起こせる脆弱性。
クロスサイトスクリプティング(XSS)
他のユーザーが閲覧するページに悪意あるスクリプトを注入し、当該サイトのオリジンとして被害者のブラウザで実行させる Web 脆弱性。