Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
HTTP/2 Desync Attacksを解説する
Search
kuzushiki
September 30, 2021
Technology
2
1k
HTTP/2 Desync Attacksを解説する
第11回 初心者のためのセキュリティ勉強会(
https://sfb.connpass.com/event/224489/)の発表資料です
kuzushiki
September 30, 2021
Tweet
Share
More Decks by kuzushiki
See All by kuzushiki
ECS-cape – Hijacking IAM Privileges in Amazon ECSを解説する
kuzushiki
0
250
Next.jsの脆弱性(CVE-2025-29927)の話
kuzushiki
0
21
CISSPに出てくるセキュリティモデルとアクセス制御モデルをまとめてみた
kuzushiki
0
210
攻撃者の視点から見たGraphQLのセキュリティ
kuzushiki
0
21
PythonのURLパーサで見つかった脆弱性について解説する
kuzushiki
0
34
Pythonのtarfileによる展開処理がセキュアになりそう
kuzushiki
0
11
Web Cache Deception Attackについて解説する
kuzushiki
0
28
PHP8.2の新機能✞SensitiveParameter✞につい て
kuzushiki
0
19
Apple M1 CPUの脆弱性「PACMAN」について解説する
kuzushiki
0
760
Other Decks in Technology
See All in Technology
意外と知らない状態遷移テストの世界
nihonbuson
PRO
1
260
『君の名は』と聞く君の名は。 / Your name, you who asks for mine.
nttcom
1
120
2025-12-18_AI駆動開発推進プロジェクト運営について / AIDD-Promotion project management
yayoi_dd
0
160
マイクロサービスへの5年間 ぶっちゃけ何をしてどうなったか
joker1007
21
8.1k
202512_AIoT.pdf
iotcomjpadmin
0
140
Amazon Bedrock Knowledge Bases × メタデータ活用で実現する検証可能な RAG 設計
tomoaki25
6
2.4k
AI時代のワークフロー設計〜Durable Functions / Step Functions / Strands Agents を添えて〜
yakumo
3
2.2k
SREが取り組むデプロイ高速化 ─ Docker Buildを最適化した話
capytan
0
150
なぜ あなたはそんなに re:Invent に行くのか?
miu_crescent
PRO
0
210
LayerX QA Night#1
koyaman2
0
260
【開発を止めるな】機能追加と並行して進めるアーキテクチャ改善/Keep Shipping: Architecture Improvements Without Pausing Dev
bitkey
PRO
1
130
半年で、AIゼロ知識から AI中心開発組織の変革担当に至るまで
rfdnxbro
0
140
Featured
See All Featured
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.7k
sira's awesome portfolio website redesign presentation
elsirapls
0
89
What the history of the web can teach us about the future of AI
inesmontani
PRO
0
380
The World Runs on Bad Software
bkeepers
PRO
72
12k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
0
250
The Limits of Empathy - UXLibs8
cassininazir
1
190
Embracing the Ebb and Flow
colly
88
4.9k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
710
The Spectacular Lies of Maps
axbom
PRO
1
400
A Soul's Torment
seathinner
1
2k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
Transcript
HTTP/2 Desync Attacks を解説する kuzushiki 第11回 初心者のためのセキュリティ勉強会 kuzu7shiki
今回の発表内容 HTTP/2: The Sequel is Always Worse James Kettle |
Director of Research, PortSwigger HTTP/1.1とHTTP/2との同期ズレ (DeSync) を突いた攻撃手法について 第11回 初心者のためのセキュリティ勉強会 kuzu7shiki Black Hat USA 2021で興味深かった発表を紹介する 2 / 20
HTTP/1.1 第11回 初心者のためのセキュリティ勉強会 kuzu7shiki 3 / 20
HTTP/2 第11回 初心者のためのセキュリティ勉強会 kuzu7shiki 4 / 20
HTTP/2で追加された概念 Binary Protocol HTTP/1はテキストベースなので曖昧な文字列のパースが必要 ex) ヘッダの終わりを知るために「:」を探す TCPのようなバイナリのプロトコルを採用 Message Length HTTP/1ではメッセージボディの長さを以下のヘッダで定義
Content-Length Transfer-Encoding HTTP/2では削除 メッセージボディに長さのフィールドが組み込まれているため不要 メッセージ長を曖昧にする余地がほとんどない 第11回 初心者のためのセキュリティ勉強会 kuzu7shiki 5 / 20
HTTP/2 Desync Attacks 第11回 初心者のためのセキュリティ勉強会 kuzu7shiki ようやく本題 6 / 20
Request smuggling via HTTP/2 downgrades プロトコルの違いを利用してリクエストを密輸 (smuggling) 第11回 初心者のためのセキュリティ勉強会 kuzu7shiki
7 / 20
H2.CL Desync on Netflix 第11回 初心者のためのセキュリティ勉強会 kuzu7shiki リアルワールドの脆弱性を紹介 8 /
20
Before HTTP/2ではContent-Lengthヘッダは不要 なぜかRFCでは付与してもOK After リクエストを挿入し罠サイト 02.rs に誘導 Netflixのアカウントを侵害し,クレジットカード番号など の重要な情報を窃取できた 報奨金は200万円
第11回 初心者のためのセキュリティ勉強会 kuzu7shiki 9 / 20
H2.TE Desync on Application Load Balancer 第11回 初心者のためのセキュリティ勉強会 kuzu7shiki リアルワールドの脆弱性を紹介
10 / 20
Before HTTP/2ではTransfer-EncodingヘッダはNG AWSはこれに従っていなかった After リクエストを挿入し罠サイト psres.net に誘導 報奨金は70万円 第11回 初心者のためのセキュリティ勉強会
kuzu7shiki 11 / 20
H2.TE via Request Header Injection 第11回 初心者のためのセキュリティ勉強会 kuzu7shiki リアルワールドの脆弱性を紹介 12
/ 20
Before HTTP/2はバイナリベース \r\nなどの特殊な文字列を挿入可能 After 被害者は悪意のあるNetlifyドメインからコンテンツを受け取 ることに 報奨金はMozilaから20万,Netlifyから20万円 第11回 初心者のためのセキュリティ勉強会 kuzu7shiki
13 / 20
H2.X via Request Splitting 第11回 初心者のためのセキュリティ勉強会 kuzu7shiki リアルワールドの脆弱性を紹介 14 /
20
Before chunked encodingを使わず,2回の\r\nでリクエストを 中断させようとした After しかし失敗 フロントエンドはHostヘッダを\r\n\r\nで終わらせるため, 独立したリクエストを挿入してしまった その結果... ->
第11回 初心者のためのセキュリティ勉強会 kuzu7shiki 15 / 20
結果,障害レベルの事態に 1回の通信で2つの独立したリクエストを送信してしまった リクエストとレスポンスが一つずれてしまった Set-Cookieヘッダを含むレスポンスがあったため,異なるユーザのアカウントにログインできてしま った Atlassianは全ユーザのセッションを失効することで対処 報奨金は150万円 著者はかなり影響が大きいと考えている 第11回 初心者のためのセキュリティ勉強会
kuzu7shiki 16 / 20
Desync-Powered Request Tunnelling Smugglingの例とは異なり,IPごとにコネクションが張られている 他ユーザのレスポンスに影響が出ない この場合でも キャッシュポイゾニング が可能 第11回 初心者のためのセキュリティ勉強会
kuzu7shiki 17 / 20
Tunnelling Exploitation: Cache Poisoning 第11回 初心者のためのセキュリティ勉強会 kuzu7shiki リアルワールドの脆弱性を紹介 18 /
20
Before POSTではレスポンスボディが大きすぎて上手く検知できず… HEADを用いてレスポンスボディをカット After 通常レスポンスヘッダはhtmlとしてみなされない 今回はレスポンスボディとして解釈されているためXSSが 発火 この時点でキャッシュが汚染される 他のユーザが /blog/?x=dontpoisoneveryone
に アクセスしてもXSSが発火 報奨金は150万円 第11回 初心者のためのセキュリティ勉強会 kuzu7shiki ` ` 19 / 20
おわりに HTTP/2 Desync Attacksを解説した 報奨金の多さ(計560万円!)から,とても深刻な脆弱性だということが分かった 紹介した脆弱性は以下のツールで発見できる(BApp Storeからインストール可) https://github.com/PortSwigger/http-request-smuggler E2EでHTTP/2を使うことが大切 第11回
初心者のためのセキュリティ勉強会 kuzu7shiki 20 / 20