CVE-2024-0519(V8 越界内存访问,Chrome 120,已在野外被利用)的根因分析产物。
修复提交:e0f2a195d87c9a06685121e0e783efd92d030df3 — Toon Verwaest,2024-01-12
研究的 V8 版本:12.0.267.16(fbc4963bbff),ARM64 macOS
| 路径 | 描述 |
|---|---|
harness/test-toctou-race.cc | C++ cctest,确认 GetOwnFastDataPropertyFromHeap 中的 TOCTOU 竞争窗口 |
harness/test-toctou-chain.cc | C++ cctest,演示通过 broker 管道嵌入为 HeapConstant 的填充器 |
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 之前一个提交)
./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 类中的同类漏洞——常量性未在原型转换中进行泛化。由 496f467bb72(2024 年 2 月 19 日)修复,比 CVE-2024-0519 的修复晚五周。未分配公开 CVE。影响 Chrome 122(CVE-2024-0519 补丁后)至 Chrome 123。
js/poc_325020448.js 无需任何 V8 本地标志即可触发。