
CVE-2026-97798 Windows Error Reporting - कमांड इंजेक्शन से SYSTEM तक
[!WARNING] यह रिपॉज़िटरी अधिकृत भेद्यता अनुसंधान और नियंत्रित लैब सत्यापन के लिए है। प्रूफ़ ऑफ़ कॉन्सेप्ट तब विफल-सुरक्षित (fail closed) हो जाता है जब यह ठीक एक संगत
faultrep.dll!SpawnDataCollectorकार्यान्वयन की पहचान नहीं कर पाता।
CVE-2026-97798, Windows Error Reporting (WER) Time Travel Debugging पथ में एक स्थानीय
विशेषाधिकार-उन्नयन भेद्यता है। एक अपरिविशेषाधिकार प्राप्त कॉलर, WER विशेषाधिकार
सीमा के पार हमलावर-नियंत्रित कमांड-लाइन सिंटैक्स को संरक्षित कर सकता है। उन्नत संग्राहक बाद में उस इनपुट को
TTTracer.exe कमांड लाइन में आर्ग्युमेंट सीमाओं को संरक्षित किए बिना जोड़ देता है। इस प्रकार इंजेक्ट किए गए
-out और -launch स्विच को TTD रिकॉर्डर द्वारा
रिकॉर्डर विकल्पों के रूप में व्याख्यायित किया जाता है, जिससे हमलावर-चयनित निष्पादन योग्य फ़ाइल को संग्राहक के उन्नत टोकन के साथ लॉन्च किया जा सकता है।
शामिल सिंगल-फ़ाइल PoC उस प्रिमिटिव को एक इंटरैक्टिव
NT AUTHORITY\SYSTEM शेल में बदल देता है। इसे मानक उपयोगकर्ता
तथा मध्यम-अखंडता, UAC-फ़िल्टर किए गए व्यवस्थापक खाते दोनों से सत्यापित किया गया है।

| पथ | विवरण |
|---|---|
src/CVE-2026-97798.cpp | पूर्ण सिंगल-इमेज एक्सप्लॉइट स्रोत |
bin/CVE-2026-97798.exe | पुनरुत्पादनीय x64 प्रयोगशाला बिल्ड |
build.ps1 | नियतात्मक LLVM-MinGW बिल्ड स्क्रिप्ट |
assets/system-shell.png | पृथक VM से कैप्चर किया गया 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) है, पारंपरिक शेल-कमांड
इंजेक्शन नहीं। कमजोर सिंक पर cmd.exe /c की आवश्यकता नहीं है: TTTracer स्वयं
इंजेक्ट किए गए स्विचों की व्याख्या करता है।
सामान्य उपयोग के लिए केवल CVE-2026-97798.exe की आवश्यकता होती है। वही PE इमेज कई आंतरिक मोड में
स्वयं में पुनः प्रवेश करती है:
faultrep.dll!SpawnDataCollector को उस अद्वितीय फ़ंक्शन से गतिशील रूप से हल करता है जिसमें
WER कलेक्टर ऑपकोड और प्रोटोकॉल अपरिवर्तनीय शामिल हैं। कोई बिल्ड-विशिष्ट
RVA एम्बेड नहीं है।cmd.exe उजागर करता है, जिससे एक दृश्यमान
उपयोगकर्ता-सत्र कंसोल सत्र 0 में बनाए गए शेल के साथ इंटरैक्ट कर सकता है।वितरित आर्टिफ़ैक्ट एक ही EXE रहता है। रनटाइम पर यह उसी इमेज के दो उपनाम तैयार करता है: एक
एकीकृत कंसोल के लिए और एक एलिवेटेड पेलोड के लिए। पेलोड उपनाम का उपयोग TTTracer के -onlaunch लक्ष्य के रूप में भी किया जाता है, इसलिए
रिकॉर्डर उस प्रक्रिया का निरीक्षण करता है जिसे वह वास्तव में लॉन्च करता है और जब वह छोटा
पेलोड चरण समाप्त होता है तो बाहर निकल जाता है। PoC प्रत्येक ट्रिगर से पहले और सफल पेलोड के बाद फिर से
पुरानी TTD स्थिति को रीसेट करता है, जिससे एक बाधित रन अगली
निष्पादन को HRESULT 0x80070032 के साथ विफल होने से रोकता है।
एक मानक उपयोगकर्ता के लिए, एलिवेटेड कलेक्टर पथ सीधे SYSTEM तक पहुँचता है। UAC-फ़िल्टर किए गए एडमिनिस्ट्रेटर के लिए, WER पहले लिंक किए गए उच्च
एडमिनिस्ट्रेटर टोकन के साथ पेलोड लॉन्च करता है—खाता नाम अपरिवर्तित रहता है, लेकिन
TokenIsElevated=true। फिर PoC SYSTEM के रूप में उसी इमेज में पुनः प्रवेश करता है। यह पहले
सीधे SYSTEM-टोकन प्रक्रिया निर्माण का प्रयास करता है और फ़ॉलबैक के रूप में एक अल्पकालिक Task Scheduler
प्रविष्टि का उपयोग करता है; फ़ॉलबैक कार्य लॉन्च के तुरंत बाद हटा दिया जाता है।
| घटक | सत्यापित मान |
|---|---|
| OS | 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 |
| PoC SHA-256 | C7B8FAFB132D69E9BD5A398AE183107155129C7080A87D56EFE55572450B4147 |
रिज़ॉल्वर x64 अपवाद तालिका को पार करता है और कलेक्टर के बड़े-फ़्रेम सेटअप, अनुरोध ऑपकोड 0xD0000002, संदेश आकार
0x578, प्रतीक्षा टाइमआउट 10000, और इसके तीन अपेक्षित प्रतीक्षा/सेवा त्रुटि
मैपिंग वाले एक फ़ंक्शन की आवश्यकता करता है। इसे दोनों प्रदान किए गए faultrep.dll बिल्ड्स के विरुद्ध जाँचा गया और
असंबंधित PE इमेज के विरुद्ध नकारात्मक-परीक्षण किया गया। कोई बिल्ड नंबर या RVA संग्रहीत नहीं है।
यदि कोई भविष्य का बिल्ड उस कार्यान्वयन को इतना बदल देता है कि मिलान
अस्पष्ट या अपूर्ण हो जाए, तो PoC अप्रत्यक्ष कॉल करने से पहले रुक जाता है।
कमजोर बिल्ड के एक डिस्पोज़ेबल स्नैपशॉट का उपयोग करें। गैर-एलिवेटेड PowerShell या Command Prompt से:
.\bin\CVE-2026-97798.exe
सफल होने पर, एकीकृत कंसोल प्रिंट करता है:
[CVE-2026-97798] Exploit shell token:
nt authority\system
मशीन-पठनीय प्रमाण नीचे लिखा गया है:
C:\Users\Public\Documents\CVE97798\system-proof.txt
रिज़ॉल्वर का परीक्षण ऑफ़लाइन x64 DLL के विरुद्ध भी किया जा सकता है, बिना किसी भेद्यता को ट्रिगर किए:
.\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
एक x64 LLVM-MinGW
टूलचेन इंस्टॉल करें और 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
डिस्पोज़ेबल VM स्नैपशॉट को वापस लौटाना पसंदीदा अंतिम सफ़ाई है।