
Proof-of-Concept-Exploit für eine Schwachstelle in der V8-JavaScript-Engine (CVE-2025-6554), der eine TDZ-Umgehung demonstriert, die den 'The Hole'-Sentinel leakt und so Typverwechslung und potenzielle 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.