Shikata Ga Nai

Private? There is no such things.

WebキャッシュのルールとWeb Cache Deceptionを引き起こす条件

Hello there, ('ω')ノ

✅ キャッシュルールとは?

キャッシュルールは、Webキャッシュが「どのレスポンスをキャッシュするか、そしてどれくらいの期間保存するか」を決める基準です。


🔍 キャッシュルールの目的

対象 理由
静的リソース(画像、CSS、JSなど) 頻繁に変わらないため、キャッシュに最適
動的コンテンツ(ログイン情報、個人データなど) 機密性が高く、都度サーバーから取得すべき

🎯 主なキャッシュルールの種類

1️⃣ 静的ファイル拡張子ルール

  • 例:.css, .js, .jpg, .png など
  • URLの末尾がこれらの拡張子に一致する場合、キャッシュ対象とみなされやすい

2️⃣ 静的ディレクトリルール

  • 例:/static/, /assets/, /public/ など
  • URLが特定のパスプレフィックスで始まるとキャッシュ対象とみなす

3️⃣ ファイル名ベースのルール

  • 例:robots.txt, favicon.ico, logo.png など
  • よく使われるファイル名に特別なキャッシュルールが設定されている

💥 Web Cache Deceptionにおける悪用ポイント

攻撃者はこれらのキャッシュルールを悪用して:

  • 本来キャッシュされるべきでない個人情報ページや認証後ページ
  • .css/static/などのパターンを強引に付与
  • これにより、本来非公開のレスポンスがキャッシュに乗り、他人に漏洩

🔍 例:Web Cache Deception攻撃のURL

/profile → 本来キャッシュ不可
/profile.css → 「静的ファイルだ」と誤認させてキャッシュ対象にされる

✅ キャッシュルールのカスタム化

一部のCDNやWebサーバーは以下のようなカスタムルールにも対応:

  • URLクエリパラメータによる分岐
  • User-Agent や Cookie ヘッダーによる制御
  • 応答の Content-Typeによって保存の可否を切り替える
  • サーバー側の動的分析により判定(例:キャッシュヘッダーで制御)

✅ まとめ

ルールタイプ 悪用のリスク
拡張子ベース URLを偽装しやすく、簡単に騙せる
ディレクトリベース staticをパスに含めるだけで対象になりがち
ファイル名ベース robots.txtなどはキャッシュされやすい定番標的

Web Cache Deceptionは、キャッシュルールの単純さ・柔軟さを逆手に取った攻撃です。

Best regards, (^^ゞ