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
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
270
Next.jsの脆弱性(CVE-2025-29927)の話
kuzushiki
0
26
CISSPに出てくるセキュリティモデルとアクセス制御モデルをまとめてみた
kuzushiki
0
290
攻撃者の視点から見たGraphQLのセキュリティ
kuzushiki
0
28
PythonのURLパーサで見つかった脆弱性について解説する
kuzushiki
0
47
Pythonのtarfileによる展開処理がセキュアになりそう
kuzushiki
0
15
Web Cache Deception Attackについて解説する
kuzushiki
0
37
PHP8.2の新機能✞SensitiveParameter✞につい て
kuzushiki
0
25
Apple M1 CPUの脆弱性「PACMAN」について解説する
kuzushiki
0
790
Other Decks in Technology
See All in Technology
Evolution of Claude Code & How to use features
oikon48
1
570
作りっぱなしで終わらせない! 価値を出し続ける AI エージェントのための「信頼性」設計 / Designing Reliability for AI Agents that Deliver Continuous Value
aoto
PRO
2
260
スクリプトの先へ!AIエージェントと組み合わせる モバイルE2Eテスト
error96num
0
150
僕、S3 シンプルって名前だけど全然シンプルじゃありません よろしくお願いします
yama3133
1
170
DX Improvement at Scale
ntk1000
3
450
JAWS FESTA 2025でリリースしたほぼリアルタイム文字起こし/翻訳機能の構成について
naoki8408
1
220
ナレッジワーク IT情報系キャリア研究セッション資料(情報処理学会 第88回全国大会 )
kworkdev
PRO
0
160
Kubernetesにおける推論基盤
ry
1
250
Claude Codeが爆速進化してプラグイン追従がつらいので半自動化した話 ver.2
rfdnxbro
0
480
自動テストが巻き起こした開発プロセス・チームの変化 / Impact of Automated Testing on Development Cycles and Team Dynamics
codmoninc
3
1.3k
Oracle Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
4
1.1k
Dr. Werner Vogelsの14年のキーノートから紐解くエンジニアリング組織への処方箋@JAWS DAYS 2026
p0n
1
120
Featured
See All Featured
HDC tutorial
michielstock
1
520
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Chasing Engaging Ingredients in Design
codingconduct
0
140
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.8k
The untapped power of vector embeddings
frankvandijk
2
1.6k
How to train your dragon (web standard)
notwaldorf
97
6.5k
Testing 201, or: Great Expectations
jmmastey
46
8.1k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.1k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.1k
GraphQLの誤解/rethinking-graphql
sonatard
75
11k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
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