
Preuve de concept d'exploitation pour une vulnérabilité du moteur JavaScript V8 (CVE-2025-6554) démontrant un contournement de la TDZ qui divulgue le sentinelle « The Hole », permettant une confusion de types et une corruption mémoire potentielle.
function leak_hole() {
let x;
delete x?.[y]?.a;
return y;
let y;
}
function pwn() {
let hole = leak_hole();
%DebugPrint(hole);
}
pwn();
Une variable y a été accédée avant sa déclaration. Normalement, cela devrait déclencher une ReferenceError (TDZ), mais dans les anciennes versions de V8, combiné avec delete x?.[y], la vérification échouait et renvoyait la valeur sentinelle interne "The Hole".
V8 ne vérifiait la TDZ qu'une seule fois, puis supposait à tort que y était valide. Cela permettait à "The Hole" de s'échapper dans le code utilisateur.
Le correctif force une nouvelle vérification TDZ (ThrowReferenceErrorIfHole) à chaque accès, garantissant que y avant initialisation lève toujours une erreur.
Impact : Les attaquants pouvaient capturer "The Hole" et en abuser pour des confusions de type, des astuces de pile ou des contournements de portée.