
CVE-2024-0519 root cause analysis
CVE-2024-0519(V8 のメモリ領域外アクセス、Chrome 120、実環境で悪用済み)の根本原因分析(RCA)成果物。
修正: e0f2a195d87c9a06685121e0e783efd92d030df3 — Toon Verwaest、2024-01-12
調査対象 V8 バージョン: 12.0.267.16(fbc4963bbff)、ARM64 macOS
| パス | 説明 |
|---|---|
harness/test-toctou-race.cc | GetOwnFastDataPropertyFromHeap の TOCTOU 競合ウィンドウを確認する C++ cctest |
harness/test-toctou-chain.cc | ブローカーパイプライン経由で filler が HeapConstant として埋め込まれることを実証する C++ cctest |
js/poc_325020448.js | chromium:325020448(兄弟バグ、公開 CVE なし)用のゼロイントリンシックス JS トリガー |
js/regress_325020448.js | chromium:325020448 用の公式 V8 リグレッションテスト(--allow-natives-syntax が必要) |
patches/e0f2a195.md | 修正コミットのメタデータ |
# パッチ適用前の d8(V8 12.0.267.16、e0f2a195 の 1 コミット前)
./d8 --concurrent-recompilation js/poc_325020448.js
# C++ cctest — V8 cctest ビルドに統合してから実行:
./cctest test-toctou-race/ToctouRaceDeleteProperty
./cctest test-toctou-chain/EndToEndChainInstallNoPatch
./cctest test-toctou-chain/ConsequenceJSConsumption
ビルド手順は BUILD.md を参照。
同じ PropertyConstness::kConst クラス内の兄弟バグ — constness がプロトタイプ遷移をまたいで一般化されていなかった。CVE-2024-0519 修正の 5 週間後に 496f467bb72(2024 年 2 月 19 日)で修正された。公開 CVE は割り当てられていない。Chrome 122(CVE-2024-0519 パッチ適用後)から Chrome 123 まで影響する。
js/poc_325020448.js は V8 natives フラグなしでこれを発火させる。