CVE-2021-30809 — Apple WebKit Use-After-Free 脆弱性 (クラッシュ PoC)
https://github.com/user-attachments/assets/e81f8a01-d48d-44cc-a38f-ce59b01222d5
概要
このリポジトリは、CVE-2021-30809(WebKit の use-after-free (UAF) 脆弱性)に対する最小限のクラッシュ誘発用ハーネスを含んでいます。PoC は、細工された Web コンテンツを処理することで脆弱なコードパスを実行し、ブラウザのクラッシュ(完全なエクスプロイトではなく)を確実に引き起こすことを目的としています。研究、デバッグ、回帰テスト専用です。
- 対象エンジン: WebKit (例: WebKitGTK / WPE WebKit、デバイスに組み込まれたレガシーフォーク)
- テスト対象デバイスの例: PlayStation 4 ブラウザ (WebKit 605.1.15)
- 目的: 露出の検証と修正/緩和策の確認のための決定論的クラッシュトリガー
影響を受けるコンポーネントとバージョン
- WebKitGTK および WPE WebKit の 2.32.4 より前のバージョンが脆弱と報告されています。
- Apple プラットフォーム (Safari 15、iOS/iPadOS/tvOS/watchOS 15、ps4 6.00 ~ 12.52) は、ベンダーのアドバイザリによるとアップストリームの修正を含んでいます。
正確な範囲については、必ずベンダー/セキュリティアドバイザリを参照してください。
PoC 設計
- HTML は、細工されたオプションと積極的な反復を使用して WebKit の国際化/日時フォーマットコードパスに負荷をかける JavaScript ルーチン (
triggerCrash) を呼び出します。
- このシーケンスは、ライフタイム/GC プレッシャーを増幅し、エンジンが脆弱な場合に UAF クラッシュを露呈するように設計されています。
- メモリ破壊プリミティブは収穫されません。PoC は意図的に ROP/スプレーや権限昇格の手順を避けています。
リポジトリ構成
exploit.html: UI を PoC ルーチンに接続するエントリポイント。
poc.js: クラッシュ条件をトリガーする JavaScript ハーネス。
server.py: 明示的なルーティング、CORS、シンプルなログを備えた軽量 HTTP サーバー。
start_server.bat: Windows 用の便利なランチャー。
必要条件
- Python 3.x
- デスクトップ OS またはサーバーと同じ LAN 上のテスト対象デバイス
サーバーの実行
-
Windows (推奨のクイックスタート):
start_server.bat をダブルクリックするか、ターミナルから実行します。
- スクリプトは適切な RFC1918 LAN IP を解決し、アクセス URL (例:
http://localhost:8080、http://<LAN_IP>:8080) を出力します。
-
クロスプラットフォーム:
- プロジェクトディレクトリでターミナルを開きます。
- 実行:
python server.py
- 表示された URL (通常
http://localhost:8080) にアクセスします。
PS4 テスト (対象例)
- PS4 がサーバーと同じ LAN に接続されていることを確認します。
- PS4 ブラウザを開きます。
http://<server-lan-ip>:8080 にアクセスします。
- 「Run Crash Test」をクリックします。
サーバーの詳細
- Bind:
0.0.0.0:8080
- エンドポイント:
/ または /index.html → exploit.html を提供
/poc.js → PoC ハーネスを提供
/server-info.js → ローカル列挙から導出された { ip, port, url, ips } を公開
/ip → 選択されたサーバー IP をプレーンテキストで返す
/favicon.ico → 204
- 機能:
- RFC1918 IP 選択 (優先順位:
192.168.0.0/16、次に 10.0.0.0/8、次に 172.16.0.0/12)
- GET/POST/OPTIONS に対して CORS ヘッダー有効
- User-Agent ヒントを含むシンプルなログ (PS4 ブラウザをフラグ)
注意事項と安全性
- この PoC はクラッシュ指向です。コード実行は試みません。
- 管理された環境で、所有しテストを許可されたデバイスでのみ使用してください。
- 脆弱なビルドでは不安定性やブラウザのクラッシュが発生する可能性があります。
参考文献