CVE-2020-0674
CVE-2020-0674 هي ثغرة من نوع use-after-free في محرك jscript القديم. يمكن استغلالها في إنترنت إكسبلورر. هذا الاستغلال من كتابة maxpl0it لكن الثغرة نفسها اكتشفتها Qihoo 360 وقد كانت تُستخدم في البرية. هذا الاستغلال يقوم ببساطة بتشغيل الآلة الحاسبة (calc).
يمكن العثور على شرح الاستغلال هنا.
نظرة عامة على الثغرة
- توجد الثغرة في دالة
sort الخاصة بالمصفوفة Array عند استخدام دالة مقارنة.
- الوسيطان المقدَّمان لدالة المقارنة لا يتم تتبعهما بواسطة جامع القمامة، وبالتالي ستشيران إلى ذاكرة محررة بعد استدعاء GC.
ملاحظات حول الاستغلال
- كُتب الاستغلال خصيصًا لنظام Windows 7، لكن يمكن نقله على الأرجح دون عناء كبير.
- كُتب هذا الاستغلال لإصدارات x64 من IE، ولذلك سيعمل (وقد تم اختباره) على إعدادات المتصفح التالية:
- IE 8 (إصدار x64)
- IE 9 (إصدار x64)
- IE 10 (إما مع تمكين Enhanced Protected Mode أو تمكين TabProcGrowth)
- IE 11 (إما مع تمكين Enhanced Protected Mode أو تمكين TabProcGrowth)
- يجدر بالذكر أن Enhanced Protected Mode على Windows 7 يقوم ببساطة بتمكين إصدار x64 من عملية المتصفح، لذا فهو ليس هروبًا من صندوق الحماية بقدر غياب أي صندوق حماية إضافي. ومن المفارقات، نظرًا لأن هذا الاستغلال مخصص لـ x64، فإن EPM يسمح له بالعمل فعليًا.
- الاستغلال ليس مصممًا لتجاوز EMET بالكامل (في الحقيقة، تم تنفيذ تجاوز لكشف stack pivot فقط)، لكن النسخة النهائية (5.52) لا يبدو أنها تُطلق EAF+ عند تشغيل الاستغلال بينما النسخة 5.5 تفعل ذلك (على الأقل، على Windows 7 x64). لذا فإن IE 11 في Enhanced Protected Mode مع تمكين أقصى إعدادات EMET يسمح بتشغيل الاستغلال.
- الاستغلال مليء بالتعليقات، لكن من أجل فهم أفضل لكيفية عمل الاستغلال وما يفعله في كل مرحلة، غيّر
var debug = false; إلى var debug = true; ثم إما افتح وحدة تحكم المطور لعرض السجل أو أبقها مغلقة وعاين نوافذ التنبيه alert بدلًا من ذلك (وهو ما قد يكون مزعجًا بعض الشيء).