Hello there, ('ω')ノ
キャッシュとは?
- Webサイトの表示を速くするため、一度表示したデータを一時保存しておく仕組み
- ブラウザ側、サーバー側、CDN(Cloudflareなど)でキャッシュされることがあります
たとえば:
- 社内ポータルのトップページ画像
- 公開資料PDF
など、頻繁に同じデータを見る場所でよく使われます。
キャッシュポイズニングとは?
- 攻撃者が細工したリクエストを送る
- その内容がキャッシュとして保存される
- 他の利用者がそのキャッシュを使ってしまう
たとえば:
- 本来ログイン画面が表示されるべきURLで
- 攻撃者のページが表示されてしまう
ということが理論上可能になります。
よくあるチェック対象
✅ ログイン不要なページ
✅ URLパラメーター付きのページ
✅ 公開資料やダウンロードページ
実際のチェック手順① キャッシュ対象を探す
- F12キー → Networkタブ
- 対象ページを開く
Response Headers を確認:
Cache-Control: public
- Cache-Control: max-age=...
このように「public」になっているものは要注意です。
実際のチェック手順② パラメーターを細工して試す
例:
https://intra.example.co.jp/info?page=1
ここに不要なパラメーターをつけて再アクセス:
https://intra.example.co.jp/info?page=1&test=evil
✅ 観察ポイント:
- その後、元のURLを開いても細工した内容が表示されてしまわないか?
- キャッシュが上書きされていないか?
実際のチェック手順③ HTTPヘッダーの確認と改ざん
キャッシュ制御用ヘッダーが適切か確認します:
- Vary: Cookie
- Cache-Control: private
- Set-Cookie
これらが設定されていないとキャッシュポイズニングリスクが高まります。
チェックリストまとめ
- [ ] Cache-Control ヘッダーが適切に設定されているか?
- [ ] URLパラメーター付きでキャッシュが変わらないか確認したか?
- [ ] キャッシュ対象になってはいけないページが含まれていないか?
- [ ] 本番環境でテストする場合は必ず許可を取ったか?
注意事項
- 本番環境でキャッシュ設定を変更する場合はシステム担当と必ず連携
- CDNサービス利用時も別途確認が必要
まとめ
- キャッシュポイズニングは「一度保存された悪意あるデータがみんなに配られる」状態
- ヘッダー確認+URL細工で基本チェック可能
- 非エンジニアでもF12のNetworkタブだけで十分確認できる
Best regards, (^^ゞ