Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Webキャッシュポイズニング
Search
shunaroo
April 27, 2022
Technology
990
0
Share
Webキャッシュポイズニング
Webのキャッシュを悪用することで、攻撃を行うWebキャッシュポイズニングとその対策を紹介します。
shunaroo
April 27, 2022
More Decks by shunaroo
See All by shunaroo
Browser In The Browserの紹介
shunaroo
0
120
Other Decks in Technology
See All in Technology
Databricks Lakebaseを用いたAIエージェント連携
daiki_akimoto_nttd
0
140
Oracle Cloud Infrastructure:2026年3月度サービス・アップデート
oracle4engineer
PRO
0
370
AIドリブン開発の実践知 ― AI-DLC Unicorn Gym実施から見えた可能性と課題
mixi_engineers
PRO
0
100
バックオフィスPJのPjMをコーポレートITが担うとうまくいく3つの理由
yueda256
1
260
OpenClawでPM業務を自動化
knishioka
2
380
JAWS DAYS 2026でAIの「もやっと」感が解消された話
smt7174
1
130
組織的なAI活用を阻む 最大のハードルは コンテキストデザインだった
ixbox
1
170
最大のアウトプット術は問題を作ること
ryoaccount
0
300
「決め方」の渡し方 / How to hand over the "decision-making process"
pauli
6
1.1k
TUNA Camp 2026 京都Stage ヒューリスティックアルゴリズム入門
terryu16
0
670
「できない」のアウトプット 同人誌『精神を壊してからの』シリーズ出版を 通して得られたこと
comi190327
3
560
推し活エージェント
yuntan_t
1
770
Featured
See All Featured
Measuring & Analyzing Core Web Vitals
bluesmoon
9
800
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
140
Context Engineering - Making Every Token Count
addyosmani
9
790
So, you think you're a good person
axbom
PRO
2
2k
For a Future-Friendly Web
brad_frost
183
10k
Git: the NoSQL Database
bkeepers
PRO
432
67k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8k
The agentic SEO stack - context over prompts
schlessera
0
730
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
61
43k
The Invisible Side of Design
smashingmag
302
51k
Skip the Path - Find Your Career Trail
mkilby
1
94
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Transcript
Web キャッシュ ポイズニング ~Webのキャッシュを使った攻撃と対策~ @shunaroo
自己紹介 @shunaroo ▪ 経歴 (重複あり) ▪ Webアプリ開発 5~6年 ▪ Web/NW脆弱性診断
3~4年 ▪ コンサルもどき 1~2年 ▪ 趣味 ▪ 犬を愛でる ▪ ゴルフ
Web キャッシュ ポイズニングとは? ▪ 攻撃者が用意した悪意のあるWebキャッシュに被害者がアクセスすることで発生する攻撃 攻撃者 被害者 悪意のある Webキャッシュ 攻撃者に利用された
サーバ キャッシュサーバ
Web キャッシュとは? ▪ Webコンテンツを一時的に保存(キャッシュ)しておくこと。 ▪ キャッシュ専用のサーバを用意しておくことで、Webコンテンツの応答速度や効率を上げること ができる 利用者A キャッシュされた コンテンツ
キャッシュサーバ 利用者B キャッシュサーバからコンテンツを取得できるので、 利用者Bはその分早く受け取れるし、 元のサーバの負荷も減る 同じWebコンテンツにアクセスする場合 キャッシュがない場合は 元のサーバまで取りに行く
キャッシュキーとアンキャッシュキー ▪ キャッシュサーバが、リクエストを受けた際に、「何をもって同じリクエストか」を判断する目印が必要 ▪ その目印を「キャッシュキー(Cache Key)」と呼ぶ ▪ 少なくとも、どのサイト(Hostヘッダ)のどのコンテンツ(リクエストライン)かを識別する値は、 キャッシュキーの一部となる ▪
キャッシュキーにならないリクエストの部分を「アンキャッシュキー(Uncache Key)」と呼ぶ キャッシュキー例 アンキャッシュキー例
Webキャッシュポイズニングの主な条件 ①元のサイトから悪意のあるレスポンスを引き出せる ▪ 本来アクセスしたいサイト以外にリダイレクトされる ▪ 不正なスクリプトが動作する など ②攻撃が悪用できる状態でキャッシュできる 元のサイト 悪意のある
Webキャッシュ キャッシュサーバ 被害者
攻撃のステップ ①攻撃に使えるアンキャッシュキーを特定する キャッシュキーに、攻撃用のペイロードを載せられたとしても、 攻撃するためには、被害者も同様に攻撃用のペイロードを載せたリクエストを送る必要がある(影響小) アンキャッシュキーを用いて、攻撃することができれば、 被害者はサイトにアクセスするだけで、攻撃が成立するようになる(影響大) 特定方法としては、Burp SuiteのプラグインParam Minerが有名 ②キャッシュさせる
すぐにキャッシュされなかったり、短期間で消えてしまう可能性があるので、注意深く観察する
学習用サイト Web Security Academy ▪ Lab: Web cache poisoning with
an unkeyed header <https://portswigger.net/web-security/web-cache-poisoning/exploiting-design- flaws/lab-web-cache-poisoning-with-an-unkeyed-header> ▪ アンキャッシュキーに含まれる値を用いてJSの読み込み先を変更していることを利用して、 読み込み先を攻撃者が用意してるサーバに変更し、攻撃する
解法例 ステップ① ▪ Param Minerでアンキャッシュキーを探索
解法例 ステップ② ▪ 「x-forwarded-host」がアンキャッシュキーとして悪用できそうであるとわかる
▪ リクエストレスポンスを確認してみる 解法例 ステップ③
解法例 ステップ④ ▪ リクエストレスポンスを確認してみる JSの読み込み先が「x-forwarded-host」で指定したドメインに変わっている。 悪意のあるレスポンスを引き出せることがわかる
解法例 ステップ⑤ ▪ 攻撃用サーバの準備 このURLにアクセスすると、 alert(document.cookie)が返却される
解法例 ステップ⑥ ▪ JSの読み込み先を攻撃用サーバに変え、かつキャッシュされるようにリクエストを数回送信 キャッシュキー 攻撃用サーバのドメイン
解法例 ステップ⑦ ▪ JSの読み込み先を攻撃用サーバに変え、かつキャッシュされるようにリクエストを送信 キャッシュから取得 読み込み先が攻撃者のサーバに変わっている
解法例 ステップ⑧ 検証完了 ▪ トップページアクセスすることで、攻撃者が用意したスクリプトが作動
対策 ▪ キャッシュさせない ←難しい ▪ キャッシュキー/アンキャッシュキーをきっちり把握し、悪意のあるレスポンスを発生させない 魔法のような対策はない。地道な情報収集と検証が大事
参考 ▪ Web cache poisoning ▪ https://portswigger.net/web-security/web-cache-poisoning