
ThrottleStop.sys قراءة/كتابة عشوائية للذاكرة الفعلية
إثبات مفهوم كامل لبرنامج تشغيل ThrottleStop.sys من TechPowerUp (CVE-2025-7771).
برنامج تشغيل نواة موقّع وما يزال قابلاً للتحميل يعرّض قراءة وكتابة غير متحقق منها للذاكرة الفعلية
عبر استدعاءَي IOCTL. هذا المستودع يحوّل هذه الأولية إلى تصعيد صلاحيات محلي عامل
من مسؤول إلى SYSTEM، ويوثّق خللاً في تسمية الجهاز
يكسر معظم أساليب الكشف المعتمدة على المسار أو اسم الملف.
كان هناك بالفعل إثبات مفهوم لنفس الاستدعاءَين (انظر قسم 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 يقوم بتحميله. الإبطال (Revocation) لا يساعد إلا إذا كان تاريخه سابقاً لوقت التوقيع، وهذا نادر الحدوث بالنسبة لبرامج التشغيل القديمة كهذا.
مورد الإصدار لا يحتوي على CompanyName أو OriginalFilename أو InternalName، لذلك
لا يمكن نسب الملف إلى بائعه من بياناته الوصفية الخاصة.
استدعاءا IOCTL يقرآن ويكتبان في الذاكرة الفعلية دون أي تحقق من الحدود أو من صحة العنوان:
| IOCTL | العملية |
|---|---|
0x80006498 | قراءة فيزيائية |
0x8000649C | كتابة فيزيائية |
كلا الاستدعاءين من نوع METHOD_BUFFERED، لذا لا يوجد إلغاء مرجعية لمؤشر مستخدم؛ العيب هو
عدم التحقق من العنوان الفيزيائي المقدَّم من المستدعي، وليس مؤشراً غير مفحوص.
جدير بالتنبيه: معالج الكتابة 0x8000649C مُعرَّف بصلاحية FILE_READ_ACCESS. المقبض
المفتوح للقراءة فقط يمكنه مع ذلك إصدار كتابات فيزيائية، لذا فإن قناع الصلاحيات المُعلن
لا يطابق ما يفعله المعالج فعلياً.
فتح الجهاز يتطلب صلاحيات مسؤول، لذلك هذا ليس عبوراً لحدود الصلاحيات بحد ذاته. ما يوفره للمهاجم الذي هو بالفعل مسؤول هو قراءة/كتابة نواة عشوائية من وضع المستخدم، وهو ما يُسقط الحمايات التي يُفترض أن تصمد فوق صلاحيات المسؤول: تكامل كود HVCI، وPPL، وحماية EDR/AV الذاتية. كلاسيكية "أحضر برنامج تشغيل ضعيفاً خاصتك".
كعرض عملي ملموس، يستخدم إثبات المفهوم أولية القراءة/الكتابة لسرقة رمز 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، مرتفع).
كل شيء يعمل من وضع المستخدم ضد استدعاءَي القراءة/الكتابة الفيزيائية في برنامج التشغيل. لا يوجد تنقل في جداول الصفحات ولا أي تدخل لـ CR3؛ يتم تحديد موقع العمليتين بمسح الذاكرة الفيزيائية مباشرة:
ImageFileName فيه
هو System وUniqueProcessId هو 4. المسح محصور بنطاقات RAM المأهولة
المقروءة من مفتاح التسجيل HARDWARE\RESOURCEMAP\...\Physical Memory الخاص بالبرنامج الثابت،
وليس نافذة تخمينية، لذلك لا يتم لمس ثغرات MMIO ولا يُفوَّت أي شيء فوق الذاكرة
المثبّتة.Token (EPROC_TOKEN) من EPROCESS المحدد.Token الخاصة بنا. الرمز
هو _EX_FAST_REF، لذا فإن بتات العدّاد المنخفضة تُقنَّع افتراضياً (--mask
يحدد السلوك).cmd.exe؛ سيعيد whoami القيمة .الإزاحات (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. كل ما هنا تم اختباره على أنظمة يملكها المؤلف. لا تشغّل هذا ضد أنظمة لا تملكها أو لست مخوّلاً لاختبارها.
NT AUTHORITY\SYSTEM