
Exploit de prueba de concepto para CVE-2025-7771, una vulnerabilidad del controlador del kernel de Windows en ThrottleStop.sys que permite lectura/escritura arbitraria de memoria física y escalada de privilegios local a SYSTEM.
Prueba de concepto para CVE-2025-7771. ThrottleStop.sys expone dos manejadores IOCTL que permiten lectura/escritura arbitraria de memoria física sin control de acceso: cualquier proceso administrador puede leer o escribir en cualquier parte de la RAM física.
Probado en Windows 10 22H2 y Windows 11 23H2 x64.
Empecé cargando el binario del controlador en IDA Pro para averiguar cómo funciona internamente. Encontré la rutina de despacho IRP_MJ_DEVICE_CONTROL y la seguí hasta dos códigos IOCTL:
0x80006498 — leer desde dirección física0x8000649C — escribir a dirección físicaAmbos simplemente llaman a MmMapIoSpace directamente con cualquier dirección que pases. Sin verificación de límites, sin validación del llamante, nada. Ese es el fallo.
A partir de ahí, la ruta de explotación es bastante directa:
\\.\ThrottleStopNtQuerySystemInformation clase 79) para construir un mapa de traducción de dirección virtual a físicaNtQuerySystemInformation clase 11ntoskrnl.exe desde el disco para resolver el RVA de exportación de PsInitialSystemProcess, sumarlo a la base en tiempo de ejecución para obtener la dirección virtual del kernelEPROCESS+0x4b8ActiveProcessLinks para encontrar nuestro propio EPROCESSEl campo de token es _EX_FAST_REF, por lo que los 4 bits bajos son un recuento de referencias, no parte del puntero. Enmascáralos al leer el token de SYSTEM, conserva nuestros propios bits de recuento de referencias al escribir, de lo contrario corres el riesgo de un BSOD.
cl /std:c++20 /EHsc /O2 exploit_single.cpp /link ntdll.lib advapi32.lib
Requiere MSVC (VS2022+) y que el controlador esté cargado. Ejecutar como administrador.
Estos son para Windows 10 20H2 hasta 22H2 y Windows 11 22H2/23H2 x64. Verifique con dt nt!_EPROCESS en WinDbg si está en una compilación diferente.
| Campo | Desplazamiento |
|---|---|
| UniqueProcessId | 0x440 |
| ActiveProcessLinks | 0x448 |
| Token | 0x4b8 |
Solo con fines educativos y de investigación. Probado en una máquina virtual personal.