Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
HTTP/2 Desync Attacksを解説する
Search
kuzushiki
September 30, 2021
Technology
1.1k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
HTTP/2 Desync Attacksを解説する
第11回 初心者のためのセキュリティ勉強会(
https://sfb.connpass.com/event/224489/)の発表資料です
kuzushiki
September 30, 2021
More Decks by kuzushiki
See All by kuzushiki
ECS-cape – Hijacking IAM Privileges in Amazon ECSを解説する
kuzushiki
0
330
Next.jsの脆弱性(CVE-2025-29927)の話
kuzushiki
0
52
CISSPに出てくるセキュリティモデルとアクセス制御モデルをまとめてみた
kuzushiki
0
550
攻撃者の視点から見たGraphQLのセキュリティ
kuzushiki
0
52
PythonのURLパーサで見つかった脆弱性について解説する
kuzushiki
0
75
Pythonのtarfileによる展開処理がセキュアになりそう
kuzushiki
0
34
Web Cache Deception Attackについて解説する
kuzushiki
0
88
PHP8.2の新機能✞SensitiveParameter✞につい て
kuzushiki
0
39
Apple M1 CPUの脆弱性「PACMAN」について解説する
kuzushiki
0
910
Other Decks in Technology
See All in Technology
絵ではじめるKubernetesセキュリティ
aoi1
4
700
ADKで始める業務改善 - AIエージェント開発時の考えと設計
harappa80
2
260
EventBridge に「合流」はない ― サーバーレスのワークフローを育てるということ / No Join in EventBridge
yusukeshimizu
2
440
データ_AIの事業の勝敗をわけるもの
nek0128
1
470
「ピッケル本」日本語版は4.0(第6版)が出版されるべき / pickaxe4-nagoyark05
kakutani
2
270
AI coding 整合正規方法
philipz
0
480
AI時代、データエンジニアが一番おもろい
genshun9
0
680
AI de Idea
kawaguti
PRO
2
130
Claude in Chrome 入門 / Introduction to Claude in Chrome
cielo1985
0
880
データ界隈LT祭 第1回LT登壇
taromatsui_cccmkhd
2
1.5k
俺の仕事は AIに奪われないし、たぶんその BIも要らない
hikaruri
0
540
Genieを崇めよ
kameitomohiro
0
170
Featured
See All Featured
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
330
BBQ
matthewcrist
89
10k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
530
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
730
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
Darren the Foodie - Storyboard
khoart
PRO
4
3.9k
Are puppies a ranking factor?
jonoalderson
2
3.9k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
570
Mind Mapping
helmedeiros
1
370
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