
CVE-2024-0519 root cause analysis
CVE-2024-0519(Chrome 120의 V8 범위를 벗어난 메모리 접근, 실제 공격에 악용됨)에 대한 근본 원인 분석 산출물입니다.
수정: e0f2a195d87c9a06685121e0e783efd92d030df3 — Toon Verwaest, 2024-01-12
연구 대상 V8 버전: 12.0.267.16 (fbc4963bbff), ARM64 macOS
| 경로 | 설명 |
|---|---|
harness/test-toctou-race.cc | GetOwnFastDataPropertyFromHeap의 TOCTOU 경쟁(race) 윈도우를 확인하는 C++ cctest |
harness/test-toctou-chain.cc | 브로커 파이프라인을 통해 HeapConstant로 삽입된 filler를 시연하는 C++ cctest |
js/poc_325020448.js | chromium:325020448용 인트린직(intrinsics) 미사용 JS 트리거(형제 버그, 공개 CVE 없음) |
js/regress_325020448.js | chromium:325020448에 대한 공식 V8 회귀(regression) 테스트(--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 클래스의 형제 버그 — 프로토타입 전이(prototype transition) 전반에 걸쳐 상수성(constness)이 일반화되지 않은 문제입니다. CVE-2024-0519 수정 5주 후인 2024년 2월 19일 496f467bb72 커밋으로 수정되었습니다. 공개 CVE는 지정되지 않았습니다. Chrome 122(CVE-2024-0519 패치 이후 버전)부터 Chrome 123까지 영향을 줍니다.
js/poc_325020448.js는 V8 natives 플래그 없이 이 버그를 트리거합니다.