
Explotación de lectura/escritura arbitraria de memoria física usando ThrottleStop.sys (CVE-2025-7771) con traducción de direcciones de superfetch - investigación de seguridad del kernel de Windows
Herramienta de investigación que demuestra el acceso a la memoria física mediante la traducción de direcciones virtuales a físicas combinada con la explotación de controladores vulnerables.
Este proyecto explora la gestión de memoria de bajo nivel en Windows combinando la técnica superfetch para la traducción de direcciones con acceso a memoria física basado en IOCTL. Construido para comprender la interacción modo kernel/modo usuario y los internos del subsistema de memoria.
ID CVE: CVE-2025-7771
Componente: ThrottleStop.sys (controlador firmado de TechPowerUp LLC)
Versión afectada: ThrottleStop 3.0.0.0 y potencialmente otras
Tipo de vulnerabilidad: IOCTL expuesto con control de acceso insuficiente (CWE-782)
Puntuación CVSS: 8.7 (Alta) – Laboratorios Kaspersky
Impacto: Escalada de privilegios local (LPE)
El controlador ThrottleStop.sys expone dos manejadores IOCTL que permiten operaciones de lectura y escritura completamente arbitrarias sobre la memoria física a través de MmMapIoSpace. No existen comprobaciones de validación, restricciones de límites ni controles de acceso en estas interfaces. Cualquier aplicación en modo usuario puede especificar cualquier dirección física y leer o escribir datos arbitrarios.
Este acceso sin restricciones permite:
La naturaleza arbitraria del acceso significa que un atacante tiene control total sobre la memoria física sin ninguna restricción impuesta por el controlador.
La explotación sigue este patrón:
\\.\ThrottleStopNtQuerySystemInformation para localizar la dirección base del kernelMmMapIoSpaceEl malware real ha aprovechado esta vulnerabilidad para deshabilitar productos de seguridad mediante parches en funciones del kernel como NtAddAtom para secuestrar el flujo de ejecución.
Este proyecto demuestra los componentes técnicos de dicha cadena de ataque con fines educativos:
Integración con Superfetch – Traduce direcciones virtuales del kernel a direcciones físicas usando SystemSuperfetchInformation
Interfaz del controlador – Se comunica con el controlador vulnerable a través de DeviceIoControl para operaciones de memoria física
// Adquirir mapa de memoria para la traducción
auto mm = spf::memory_map::current();
// Traducir dirección virtual del kernel a física
void* virt = reinterpret_cast<void*>(0xFFFFF80000001000);
std::uint64_t phys = mm->translate(virt);
// Acceder a memoria física a través del controlador
ULONG64 value = Driver.ReadPhysical<ULONG64>(phys);
Solo con fines educativos y de investigación. El acceso no autorizado a sistemas informáticos es ilegal. Este código demuestra vulnerabilidades documentadas para la investigación de seguridad defensiva.
Licencia MIT