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, (^^ゞ