
سلسلة استغلال كاملة لـ CVE-2025-7771 في ThrottleStop.sys، تستغل IOCTLs غير المُتحقق منها للقراءة/الكتابة في الذاكرة الفيزيائية للتصعيد من مسؤول إلى SYSTEM على Windows.
إثبات مفهوم كامل لبرنامج تشغيل ThrottleStop.sys الخاص بـ TechPowerUp (CVE-2025-7771).
برنامج تشغيل نواة موقّع وقابل للتحميل لا يزال يعرض قراءة وكتابة غير مُتحقَّق منها للذاكرة
الفيزيائية عبر اثنين من IOCTLs. يحوّل هذا المستودع تلك البدائية إلى تصعيد صلاحيات محلي
عامل من المسؤول إلى SYSTEM، ويوثّق خللاً في تسمية الجهاز يعطّل معظم عمليات الكشف
المعتمدة على المسار أو اسم الملف.
كان هناك بالفعل PoC لنفس IOCTLs (انظر Credits). هذا سلسلة استغلال كاملة ومستقلة بدلاً من عرض بدائي.
| الحقل | القيمة |
|---|---|
| SHA256 | 16F83F056177C4EC24C7E99D01CA9D9D6713BD0497EEEDB777A3FFEFA99C97F0 |
| SHA1 | 82ED942A52CDCF120A8919730E00BA37619661A3 |
| MD5 | 6BC8E3505D9F51368DDF323ACB6ABC49 |
| الإصدار | 3.0.0.0 ("Low-Level Driver", 2004-2020) |
| الموقّع | TechPowerUp LLC, DigiCert EV Code Signing |
| بصمة الشهادة | 524EDA9C819321C66E22C7BABEB23DAEAFFB2182 |
| صلاحية الشهادة | 2019-08-10 إلى 2022-06-15 |
انتهت صلاحية الشهادة في 2022، لكن التوقيع يحمل طابعاً زمنياً موثوقاً للتوقيع المضاد، لذا لا يزال Windows يحمّله. الإبطال يساعد فقط إذا كان تاريخه يسبق وقت التوقيع، وهو نادراً ما يكون الحال مع برامج تشغيل قديمة كهذا.
لا يحتوي مورد الإصدار على CompanyName أو OriginalFilename أو InternalName، لذا
لا يمكن نسب الملف إلى مورّد من بياناته الوصفية الخاصة.
يقرأ ويكتب اثنان من IOCTLs الذاكرة الفيزيائية دون حدود أو تحقق من العنوان:
| IOCTL | العملية |
|---|---|
0x80006498 | قراءة فيزيائية |
0x8000649C | كتابة فيزيائية |
كلاهما METHOD_BUFFERED، لذا لا يوجد إلغاء مرجعية لمؤشر المستخدم؛ العيب هو غياب
التحقق من العنوان الفيزيائي المقدَّم من المستدعي، وليس مؤشراً غير مُتحقَّق منه.
يجدر الإشارة: معالج الكتابة 0x8000649C مُعلَن بـ FILE_READ_ACCESS. يمكن لمقبض
مفتوح للقراءة فقط أن يصدر كتابات فيزيائية، لذا لا يتطابق قناع الوصول المُعلَن مع ما
يفعله المعالج فعلياً.
يتطلب فتح الجهاز حقوق مسؤول، لذا هذا ليس تجاوزاً لحدود الصلاحيات بحد ذاته. ما يمنحه لمهاجم هو بالفعل مسؤول هو قراءة/كتابة عشوائية للنواة من وضع المستخدم، مما يبطل الحمايات المفترض أن تصمد فوق المسؤول: سلامة كود HVCI، وPPL، والحماية الذاتية لـ EDR/AV. نمط كلاسيكي من "أحضر برنامج التشغيل الثغرة الخاص بك".
كتوضيح ملموس، يستخدم PoC بدائية القراءة/الكتابة لسرقة رمز SYSTEM وإنشاء صدفة SYSTEM.
CVSS 4.0: AV:L/AC:H/AT:N/PR:H/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H (8.7، عالٍ).
كل شيء يعمل من وضع المستخدم ضد IOCTLs القراءة/الكتابة الفيزيائية لبرنامج التشغيل. لا يوجد تجوال في جداول الصفحات ولا CR3 متضمن؛ يتم تحديد موقع كلا العمليتين عبر فحص الذاكرة الفيزيائية مباشرة:
ImageFileName هو System و UniqueProcessId هو 4. الفحص محصور في نطاقات
RAM المأهولة المقروءة من مفتاح التسجيل HARDWARE\RESOURCEMAP\...\Physical Memory
الخاص بالبرنامج الثابت، وليس نافذة تخمينية، لذا لا تُلمس فتحات MMIO ولا يُفوَّت
شيء فوق RAM المثبّتة.Token (EPROC_TOKEN) من EPROCESS المحدد.Token الخاصة بنا. الرمز هو
_EX_FAST_REF، لذا تُقنَّع بتات عدّ المراجع المنخفضة افتراضياً (--mask يحدد
السلوك).cmd.exe؛ يعيد whoami القيمة NT AUTHORITY\SYSTEM.الإزاحات (EPROC_TOKEN، EPROC_PID، EPROC_IMG_NAME، إلخ) خاصة ببناء معين ويجب
تأكيدها مقابل dt nt!_EPROCESS على إصدار Windows الهدف.
اسم الملف التنفيذي مهم. تحدد الخطوة 3 موقع عمليتنا بمطابقة ImageFileName الخاص بها
في الذاكرة الفيزيائية، وهذا الحقل محدود بـ 15 حرفاً مع مطابقة الفحص لأول 8. أبقِ الاسم
المُصرَّف قصيراً ومميزاً؛ إذا أعدت تسمية الملف الثنائي، ابقَ ضمن هذا الحد وإلا لن يجد
الفحص الذاتي العملية.
لا يستخدم برنامج التشغيل اسم جهاز ثابتاً. يشتق اسم كائن الجهاز من اسم الخدمة التي
يُسجَّل تحتها؛ اسم الملف على القرص غير ذي صلة. تسجيل الملف الثنائي تحت الخدمة TRIXX
ينتج \\.\TRIXX بغض النظر عن اسم الملف على القرص.
لذا فإن أي كشف يعتمد على \Device\ThrottleStop أو ThrottleStop.sys يُتجاوَز بسهولة.
يجب أن يعتمد الكشف على تجزئة الملف أو شهادة التوقيع:
SHA256: 16F83F056177C4EC24C7E99D01CA9D9D6713BD0497EEEDB777A3FFEFA99C97F0
Thumbprint: 524EDA9C819321C66E22C7BABEB23DAEAFFB2182
Subject: CN=TechPowerUp LLC, O=TechPowerUp LLC, L=Spokane, S=Washington, C=US
قائمة DEVICE_NAMES في المصدر هي مجرد مسبار لتثبيتات المنتج المعروفة. مرّر اسم جهاز
كوسيط لاستهداف خدمة سجّلتها بنفسك.
| CVE | برنامج التشغيل |
|---|---|
| CVE-2019-7245 | GPU-Z.sys |
| CVE-2025-5324 | GPU-Z.sys |
| CVE-2025-7771 | ThrottleStop.sys (هذا المستودع) |
الملف الثنائي غير مشحون هنا. تحقق من أي نسخة مقابل SHA256 أعلاه. العينة مُفهرسة في LOLDrivers.
cl /nologo /EHsc /W4 /O2 src\ThrottleStop.cpp /Fe:myLittleLpe.exe /link advapi32.lib
للاستخدام المختبري فقط. شغّله داخل جهاز افتراضي معزول مع لقطة للرجوع إليها.
sc.exe create <name> type= kernel binPath= C:\path\to\ThrottleStop.sys
sc.exe start <name>
myLittleLpe.exe
sc.exe stop <name>
sc.exe delete <name>
لا يأخذ الملف الثنائي أي وسائط. يطبع خريطة الذاكرة الفيزيائية، ويفحص بحثاً عن EPROCESS
الخاص بـ SYSTEM والمحلي، ويبدّل الرمز، وينشئ cmd.exe يعمل كـ NT AUTHORITY\SYSTEM.

أعمال عامة أخرى على نفس برنامج التشغيل، للمقارنة:
نُشر لأغراض البحث الدفاعي وهندسة الكشف. الثغرة عامة بالفعل كـ CVE-2025-7771. تم اختبار كل شيء هنا على أنظمة يملكها المؤلف. لا تشغّل هذا ضد أنظمة لا تملكها أو غير مصرح لك باختبارها.