
تجاوز سعة المخزن المؤقت القائم على المكدس في MsIo64.sys، إثبات مفهوم لتصعيد الامتيازات المحلية إلى nt authority/system
PoC بسيط لاستغلال CVE-2021-27965 من أجل LPE عن طريق إطلاق cmd للنظام.
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-27965
تم اكتشاف مشكلة في برنامج تشغيل ويندوز MICSYS الموقّع (MsIo64.sys) مما قد يؤدي إلى اختراق النظام المحلي بالكامل. يعاني روتين إرسال IOCTL الخاص ببرنامج التشغيل من فيضان في المخزن المؤقت (stack based buffer overflow) في جميع رموز IOCTL، كما يفتقر إلى التحقق من صحة المخزن المؤقت المقدم من المستخدم.
يمكن لأي شخص إنشاء مؤشر (handle) وإرسال طلبات ioctl إلى رموز ioctl هذه التي تخترق نموذج أمان ويندوز:
في كل رمز IOCTL، لا يصل برنامج التشغيل مباشرة إلى Irp->SystemBuffer بل يستخدم دالة مشابهة لـ memcpy لنسخ Irp->SystemBuffer إلى المخزن المؤقت لإطار المكدس (stack frame) الخاص بالدالة الحالية، والذي دائمًا ما يكون بحجم ثابت (ثم يستخدم هذا المخزن المؤقت). نظرًا لأن كلاً من Irp->SystemBuffer و Irp->CurrentStackLocation->InputBufferLength يتم التحكم فيهما من قبل العملية المتصلة، يمكن لمهاجم ضار إرسال مخزن مؤقت كبير بما يكفي لتجاوز المخزن الموجود داخل إطار المكدس الخاص بالدالة. يُلاحظ: حتى إذا كان في DriverEntry يوجد __security_init_cookie()، ففي إرسال ioctl يفتقد __security_check_cookie() لسبب ما.
TODO
TODO