
Exploitation arbitraire de lecture/écriture en mémoire physique à l'aide de ThrottleStop.sys (CVE-2025-7771) avec traduction d'adresse superfetch - Recherche en sécurité du noyau Windows
Outil de recherche démontrant l'accès à la mémoire physique via la traduction d'adresses virtuelles en physiques combinée à l'exploitation d'un pilote vulnérable.
Ce projet explore la gestion de la mémoire Windows de bas niveau en combinant la technique superfetch pour la traduction d'adresses avec l'accès à la mémoire physique via IOCTL. Conçu pour comprendre l'interaction mode noyau/mode utilisateur et les composants internes du sous-système mémoire.
ID CVE : CVE-2025-7771
Composant : ThrottleStop.sys (pilote signé de TechPowerUp LLC)
Version affectée : ThrottleStop 3.0.0.0 et potentiellement d'autres
Type de vulnérabilité : IOCTL exposé avec contrôle d'accès insuffisant (CWE-782)
Score CVSS : 8.7 (Élevé) – Kaspersky Labs
Impact : Élévation de privilèges locale (LPE)
Le pilote ThrottleStop.sys expose deux gestionnaires IOCTL qui permettent des opérations de lecture et d'écriture complètement arbitraires sur la mémoire physique via MmMapIoSpace. Il n'y a aucune vérification de validation, restriction de limites ou contrôle d'accès sur ces interfaces. Toute application en mode utilisateur peut spécifier n'importe quelle adresse physique et lire ou écrire des données arbitraires.
Cet accès sans restriction permet :
La nature arbitraire de l'accès signifie qu'un attaquant a un contrôle total sur la mémoire physique sans aucune restriction imposée par le pilote.
L'exploitation suit ce schéma :
\\.\ThrottleStopNtQuerySystemInformation pour localiser l'adresse de base du noyauMmMapIoSpaceDes malwares réels ont exploité cette vulnérabilité pour désactiver des produits de sécurité en corrigeant des fonctions du noyau comme NtAddAtom afin de détourner le flux d'exécution.
Ce projet démontre les composants techniques d'une telle chaîne d'attaque à des fins éducatives :
Intégration Superfetch – Traduit les adresses virtuelles du noyau en adresses physiques à l'aide de SystemSuperfetchInformation
Interface pilote – Communique avec le pilote vulnérable via DeviceIoControl pour les opérations de mémoire physique
// Acquire memory map for translation
auto mm = spf::memory_map::current();
// Translate virtual kernel address to physical
void* virt = reinterpret_cast<void*>(0xFFFFF80000001000);
std::uint64_t phys = mm->translate(virt);
// Access physical memory through driver
ULONG64 value = Driver.ReadPhysical<ULONG64>(phys);
À des fins éducatives et de recherche uniquement. L'accès non autorisé à des systèmes informatiques est illégal. Ce code démontre des vulnérabilités documentées pour la recherche en sécurité défensive.
Licence MIT