
CVE-2024-0519 root cause analysis
Артефакты анализа первопричин для CVE-2024-0519 (выход за границы памяти V8, Chrome 120, эксплуатировался в реальных атаках).
Исправление: e0f2a195d87c9a06685121e0e783efd92d030df3 — Toon Verwaest, 2024-01-12
Изученная версия V8: 12.0.267.16 (fbc4963bbff), ARM64 macOS
| Path | Описание |
|---|---|
harness/test-toctou-race.cc | C++ cctest, подтверждающий окно состояния гонки TOCTOU в GetOwnFastDataPropertyFromHeap |
harness/test-toctou-chain.cc | C++ cctest, демонстрирующий наполнитель, встроенный как HeapConstant через конвейер брокера |
js/poc_325020448.js | Триггер JS с нулевыми интринсиками для chromium:325020448 (родственная ошибка, без публичного CVE) |
js/regress_325020448.js | Официальный регрессионный тест V8 для chromium:325020448 (требует --allow-natives-syntax) |
patches/e0f2a195.md | Метаданные коммита исправления |
# Pre-patch d8 (V8 12.0.267.16, one commit before e0f2a195)
./d8 --concurrent-recompilation js/poc_325020448.js
# C++ cctests — integrate into V8 cctest build, then:
./cctest test-toctou-race/ToctouRaceDeleteProperty
./cctest test-toctou-chain/EndToEndChainInstallNoPatch
./cctest test-toctou-chain/ConsequenceJSConsumption
Смотрите BUILD.md для инструкций по сборке.
Родственная ошибка в том же классе PropertyConstness::kConst — константность не была обобщена для переходов прототипов. Исправлено коммитом 496f467bb72 (19 февраля 2024), через пять недель после исправления CVE-2024-0519. Публичный CVE не присвоен. Затрагивает Chrome 122 (после патча CVE-2024-0519) и Chrome 123.
js/poc_325020448.js запускает её без каких-либо флагов V8 natives.