
Proof-of-Concept-Exploit für CVE-2025-7771, eine Schwachstelle im Windows-Kerneltreiber ThrottleStop.sys, die beliebiges Lesen und Schreiben von physischem Arbeitsspeicher sowie lokale Privilegienausweitung auf SYSTEM ermöglicht.
Proof-of-Concept für CVE-2025-7771. ThrottleStop.sys stellt zwei IOCTL-Handler zur Verfügung, die beliebiges Lesen/Schreiben des physischen Speichers ohne Zugriffskontrolle ermöglichen – jeder Admin-Prozess kann an beliebiger Stelle im physischen RAM lesen oder schreiben.
Getestet auf Windows 10 22H2 und Windows 11 23H2 x64.
Begann damit, die Treiber-Binärdatei in IDA Pro zu laden, um herauszufinden, wie sie intern funktioniert. Fand die IRP_MJ_DEVICE_CONTROL-Dispatch-Routine und verfolgte sie bis zu zwei IOCTL-Codes:
0x80006498 — Lesen von einer physischen Adresse0x8000649C — Schreiben in eine physische AdresseBeide rufen direkt MmMapIoSpace mit der übergebenen Adresse auf. Keine Grenzprüfung, keine Aufrufer-Validierung, nichts. Das ist der Fehler.
Von dort ist der Exploitation-Pfad recht einfach:
\\.\ThrottleStop öffnenNtQuerySystemInformation Klasse 79) verwenden, um eine virtuelle→physische Adressübersetzungstabelle zu erstellenNtQuerySystemInformation Klasse 11 leakenntoskrnl.exe von der Disk laden, um den Export-RVA von PsInitialSystemProcess aufzulösen, zur Laufzeitbasis addieren, um die Kernel-VA zu erhaltenEPROCESS+0x4b8 lesenActiveProcessLinks durchlaufen, um unseren eigenen EPROCESS zu findenDas Token-Feld ist _EX_FAST_REF, daher sind die unteren 4 Bits ein Referenzzähler, nicht Teil des Zeigers. Diese beim Lesen des SYSTEM-Tokens ausmaskieren, beim Schreiben unsere eigenen Refcount-Bits erhalten, sonst riskiert man einen BSOD.
cl /std:c++20 /EHsc /O2 exploit_single.cpp /link ntdll.lib advapi32.lib
Erfordert MSVC (VS2022+) und dass der Treiber geladen ist. Als Administrator ausführen.
Diese gelten für Windows 10 20H2 bis 22H2 und Windows 11 22H2/23H2 x64. Mit dt nt!_EPROCESS in WinDbg prüfen, wenn Sie einen anderen Build verwenden.
| Feld | Offset |
|---|---|
| UniqueProcessId | 0x440 |
| ActiveProcessLinks | 0x448 |
| Token | 0x4b8 |
Nur zu Bildungs- und Forschungszwecken. Getestet auf einer persönlichen VM.