
إثبات المفهوم لاستغلال برنامج تشغيل المرسل من لينوفو (LnvMSRIO.sys) (CVE-2025-8061)
هذا إثبات مفهوم أساسي لاستغلال برنامج تشغيل Lenovo Dispatcher (LnvMSRIO.sys) (CVE-2025-8061). تم العثور على الثغرات بواسطة Luis Casvella (المصدر: https://blog.quarkslab.com/exploiting-lenovo-driver-cve-2025-8061.html).
الفكرة الرئيسية من هذا الإثبات هي استغلال بدائيات القراءة/الكتابة فقط، لسرقة رمز النظام من ntoskrnl.exe. للقيام بذلك، يستخدم الإثبات Superfetch/PFN (https://www.outflank.nl/blog/2023/12/14/mapping-virtual-to-physical-adresses-using-superfetch/) لتمكين ترجمة العناوين الافتراضية إلى عناوين فعلية في وضع المستخدم.
باستخدام superfetch، يمكننا ترجمة العناوين الافتراضية إلى عناوين فعلية لتوفيرها مباشرة لبرنامج التشغيل الضعيف، مما يسمح لنا بقراءة وكتابة أي عنوان نريده.
بعد ذلك، سيقوم الإثبات فقط بالكتابة فوق بداية دالة NtAddAtom المعرفة في ntoskrnl.exe باستخدام شيفرة صغيرة للقفز إلى شيفرة وضع المستخدم، المعرفة في كود Rust الخاص بنا (steal_kernel_token_shellcode_fn في base.rs) باستخدام التجميع المضمن. يتم إنشاء هذه الشيفرة الصغيرة في generate_jmp_user_shellcode، وكما نرى، ستقوم بإلغاء تعيين البت 20 في CR4 لتعطيل SMEP، ثم استدعاء شيفرة المستخدم الخاصة بنا (لسرقة رمز النظام) وأخيرًا إعادة تمكين SMEP.
بكل هذا، سنحصل على cmd النظام.
هام: يلزم التشغيل كمسؤول للاستعلام عن superfetch.
تم اختباره على Windows 10 (22h2) و Windows 11 (25h2). قم بتعديل الإزاحات حسب الحاجة لإصدار Windows الخاص بك.