
CVE-2026-97798 Windows Error Reporting - حقن أوامر للوصول إلى SYSTEM
[!WARNING] هذا المستودع مخصص لأبحاث الثغرات الأمنية المصرّح بها والتحقق المختبري المُتحكَّم به. يفشل إثبات المفهوم بشكل آمن (fails closed) عندما يتعذّر عليه تحديد تطبيق واحد متوافق لـ
faultrep.dll!SpawnDataCollector.
CVE-2026-97798 هي ثغرة رفع صلاحيات محلية في مسار Time Travel Debugging الخاص بـ Windows
Error Reporting (WER). يمكن لطالب غير متمتع بالامتيازات الحفاظ على صيغة سطر أوامر يتحكم بها المهاجم
عبر حدود امتيازات WER. يقوم المجمِّع المرفوع الصلاحيات لاحقًا بدمج هذا الإدخال في
سطر أوامر TTTracer.exe دون الحفاظ على حدود الوسائط. وبالتالي تُفسَّر
مفاتيح -out و-launch المحقونة بواسطة مسجّل TTD كخيارات
للمسجّل، مما يسمح بتشغيل ملف تنفيذي يختاره المهاجم باستخدام
رمز المجمِّع المرفوع الصلاحيات.
يحوّل إثبات المفهوم أحادي الملف المضمّن هذا الأصل البدائي إلى صدفة تفاعلية
بصلاحيات NT AUTHORITY\SYSTEM. وقد تم التحقق منه من حساب مستخدم قياسي
ومن حساب مسؤول متوسط التكامل ومُرشَّح بواسطة UAC.

| المسار | الوصف |
|---|---|
src/CVE-2026-97798.cpp | مصدر الاستغلال الكامل أحادي الصورة |
bin/CVE-2026-97798.exe | نسخة مخبرية x64 قابلة لإعادة الإنتاج |
build.ps1 | نص بناء حتمي باستخدام LLVM-MinGW |
assets/system-shell.png | إثبات whoami الملتقط من الجهاز الافتراضي المعزول |
لا توجد ملفات PDF للتقرير مضمّنة بعد؛ لا يزال البحث المطوّل قيد التحرير.
يعبر التدفق المعرّض للثغرة عدة مكوّنات:
low/medium-integrity process
-> faultrep.dll!CElevatedDataCollection::ControlTimeTravelDebugging
-> faultrep.dll!SpawnDataCollector
-> Windows Error Reporting service (elevated collector)
-> CDataCollection::ControlTimeTravelDebugging
-> TtdControl::LaunchRecordingProcess
-> TTTracer.exe / TTDRecord.dll command-line parser
-> attacker-controlled -launch target
يحتوي الطلب على قيمة Process تبدأ بملف تنفيذي مشروع
لكنها تُلحق مفاتيح TTD إضافية. يطبّق التنفيذ المصاب
قائمة حظر ضعيفة تعتمد على مطابقة الاسم الدقيق، ثم يُدرج سلسلة العملية مباشرةً في
سطر أوامر المسجّل ذي الصلاحيات العالية. ولأن قيمة العملية لا تُسلسَل
كوسيط واحد، فإن المسافات فيها تصبح فواصل وسائط عندما يحلّل TTTracer
الناتج.
من حيث المفهوم، فإن الجزء المُحقَن هو:
Process=CVE-2026-97798-payload.exe
-out ..\..\Users\Public\Documents\CVE97798\trace
-launch ..\..\Users\Public\Documents\CVE97798\CVE-2026-97798-payload.exe
--payload;
المسارات النسبية مقصودة. يُدرج WER أيضًا هذه البيانات في اسم مسار .ttdconfig؛ إذ تُدخل بادئة محرك مطلقة نقطتين وتفشل بـ ERROR_INVALID_NAME. يتجنب المسار بأسلوب الاجتياز هذا التعارض في المحلّل مع التطبيع إلى الدليل العام المُتحكَّم به.
هذه مشكلة حقن وسائط (CWE-88)، وليست حقن أوامر shell تقليديًا. لا حاجة إلى cmd.exe /c عند نقطة الضعف: إذ يفسّر TTTracer نفسه المفاتيح المحقونة.
لا يتطلب الاستخدام العادي سوى CVE-2026-97798.exe. تعيد صورة PE نفسها الدخول إلى ذاتها في عدة أوضاع داخلية:
faultrep.dll!SpawnDataCollector ديناميكيًا من الدالة الفريدة التي تحتوي على opcode جامع WER وثوابت البروتوكول. لا يُضمَّن أي RVA خاص ببناء معيّن.cmd.exe حقيقيًا عبر أنابيب مسماة، ما يتيح لوحدة تحكم مرئية في جلسة المستخدم التفاعل مع shell أُنشئ في الجلسة 0.يبقى الملف الموزَّع ملف EXE واحدًا. في وقت التشغيل، يُهيّئ نسختين مستعارتين من الصورة نفسها: واحدة لوحدة التحكم المدمجة وأخرى للحمولة المرفوعة الصلاحيات. تُستخدم النسخة المستعارة للحمولة أيضًا كهدف -onlaunch الخاص بـ TTTracer، بحيث يراقب المسجّل العملية التي يُشغّلها فعليًا ويخرج عند انتهاء مرحلة الحمولة القصيرة تلك. يعيد PoC تعيين حالة TTD القديمة قبل كل تشغيل ومرة أخرى بعد نجاح الحمولة، ما يمنع تشغيلًا متقطعًا من إفشال التنفيذ التالي بـ HRESULT 0x80070032.
بالنسبة لمستخدم عادي، يصل مسار الجامع المرفوع الصلاحيات إلى SYSTEM مباشرة. أما بالنسبة لمسؤول مُرشَّح عبر UAC، فيُشغّل WER الحمولة أولًا باستخدام رمز المسؤول المرتفع المرتبط—يبقى اسم الحساب دون تغيير، لكن TokenIsElevated=true. ثم يعيد PoC الدخول إلى الصورة نفسها بصلاحيات SYSTEM. يحاول أولًا إنشاء عملية برمز SYSTEM مباشرة، ويستخدم إدخالًا قصير الأجل في Task Scheduler كخيار احتياطي؛ ويُحذف المهمة الاحتياطية فورًا بعد التشغيل.
| المكوّن | القيمة المتحقَّق منها |
|---|---|
| نظام التشغيل | Windows 11 24H2 x64، البناء 26100.9550 |
faultrep.dll المصاب | 10.0.26100.9549 |
| مقارنة الإصدار المُصلَح | faultrep.dll 10.0.26100.9711 |
| TTTracer / TTDRecord | 1.11.580.0 |
| فحص المحلّل الديناميكي | 9549: RVA 0x4CEB0؛ 9711: RVA 0x4E40C |
| SHA-256 الخاص بـ PoC | C7B8FAFB132D69E9BD5A398AE183107155129C7080A87D56EFE55572450B4147 |
يمرّ المحلّل على جدول استثناءات x64 ويتطلب دالة واحدة تحتوي على إعداد الإطار الكبير الخاص بالجامع، وopcode الطلب 0xD0000002، وحجم الرسالة 0x578، ومهلة الانتظار 10000، وتعيينات أخطاء الانتظار/الخدمة الثلاثة المتوقعة. وقد جرى التحقق منه مقابل كلا بنائي faultrep.dll المرفقين، واختباره سلبيًا مقابل صور PE غير ذات صلة. لا يُخزَّن أي رقم بناء أو RVA. إذا غيّر بناء مستقبلي ذلك التنفيذ بما يكفي لجعل المطابقة غامضة أو غير مكتملة، يتوقف PoC قبل إجراء أي استدعاء غير مباشر.
استخدم لقطة قابلة للتخلص منها من البناء المصاب. من PowerShell أو موجه أوامر غير مرفوع الصلاحيات:
.\bin\CVE-2026-97798.exe
عند النجاح، تطبع وحدة التحكم المدمجة:
[CVE-2026-97798] Exploit shell token:
nt authority\system
يُكتب الدليل القابل للقراءة آليًا أدناه:
C:\Users\Public\Documents\CVE97798\system-proof.txt
يمكن أيضًا اختبار أداة التحليل مقابل ملف DLL x64 دون اتصال دون إطلاق الثغرة الأمنية:
.\bin\CVE-2026-97798.exe --resolve C:\path\to\faultrep.dll
للتحقق المسبق من ملف DLL الخاص بالنظام المثبّت، أيضًا دون إثارة المسار المعرّض للثغرة:
.\bin\CVE-2026-97798.exe --preflight
أنتج التحقق الناجح من المسؤول المفلتر:
cve=CVE-2026-97798
user=NT AUTHORITY\SYSTEM
is_system=true
is_elevated=true
payload_session=0
shell_session=0
spawn_error=0
ثبّت سلسلة أدوات LLVM-MinGW بنية x64 وضع x86_64-w64-mingw32-clang++.exe في PATH، أو مرّر مساره المطلق صراحةً:
.\build.ps1
# or
.\build.ps1 -Compiler C:\toolchains\llvm-mingw\bin\x86_64-w64-mingw32-clang++.exe
البناء ثابت ويكتم طابع وقت رابط PE، لذا فإن مدخلات المصدر وسلسلة الأدوات المتطابقة تنتج نفس تجزئة الملف التنفيذي.
أغلق وحدة تحكم PoC أولاً. من وحدة تحكم مخبرية مرفوعة الصلاحيات، إذا ظلت حالة TTD نشطة:
Stop-Process -Name TTTracer,TTDInject -Force -ErrorAction SilentlyContinue
C:\Windows\System32\TTTracer.exe -cleanup
Remove-Item -Recurse -Force C:\Users\Public\Documents\CVE97798
يُعد استرجاع لقطة الجهاز الظاهري القابل للتخلص منه خطوة التنظيف النهائية المفضلة.
تشمل بيانات القياس المفيدة عمليات تنفيذ غير متوقعة لـ TTTracer.exe من WER، وسطور أوامر تحتوي على مفاتيح -onlaunch أو -out أو -launch متكررة أو غير معتادة، وعمليات فرعية للمسجّل تُطلق من أدلة قابلة للكتابة من قبل المستخدم. اربط نشاط WER وسطور أوامر TTTracer ومعرّف العملية المنشئة (creator PID) ورفع مستوى الرمز المميز (token elevation) وتجزئات الملفات بدلاً من التنبيه على TTTracer وحده.
ثبّت تحديث Microsoft الذي يحتوي على إصدار faultrep.dll رقم 10.0.26100.9711 أو تحديث لاحق يحل محله. يعطّل التنفيذ المصحّح مسار طلب TTD القديم قبل وصول البيانات غير الموثوقة إلى المسجّل.