
Sfruttamento di lettura/scrittura arbitraria della memoria fisica utilizzando ThrottleStop.sys (CVE-2025-7771) con traduzione degli indirizzi superfetch - Ricerca sulla sicurezza del kernel Windows
Strumento di ricerca che dimostra l'accesso alla memoria fisica tramite la combinazione della traduzione di indirizzi virtuali-fisici con lo sfruttamento di driver vulnerabili.
Questo progetto esplora la gestione della memoria a basso livello di Windows combinando la tecnica superfetch per la traduzione degli indirizzi con l'accesso alla memoria fisica basato su IOCTL. Realizzato per comprendere l'interazione kernel-mode/user-mode e i dettagli interni del sottosistema di memoria.
ID CVE: CVE-2025-7771
Componente: ThrottleStop.sys (driver firmato da TechPowerUp LLC)
Versione affetta: ThrottleStop 3.0.0.0 e potenzialmente altre
Tipo di vulnerabilità: IOCTL esposto con controllo di accesso insufficiente (CWE-782)
Punteggio CVSS: 8.7 (Alto) – Kaspersky Labs
Impatto: Escalation dei privilegi locale (LPE)
Il driver ThrottleStop.sys espone due gestori IOCTL che consentono operazioni di lettura e scrittura completamente arbitrarie sulla memoria fisica tramite MmMapIoSpace. Non sono presenti controlli di validazione, restrizioni di confine o controlli di accesso su queste interfacce. Qualsiasi applicazione in modalità utente può specificare un qualsiasi indirizzo fisico e leggere o scrivere dati arbitrari.
Questo accesso illimitato consente:
La natura arbitraria dell'accesso significa che un attaccante ha il controllo completo sulla memoria fisica senza alcuna restrizione imposta dal driver.
Lo sfruttamento segue questo schema:
\\.\ThrottleStopNtQuerySystemInformation per localizzare l'indirizzo base del kernelMmMapIoSpaceMalware reale ha sfruttato questa vulnerabilità per disabilitare prodotti di sicurezza correggendo funzioni del kernel come NtAddAtom per dirottare il flusso di esecuzione.
Questo progetto mostra i componenti tecnici di una tale catena d'attacco a scopo educativo:
Integrazione Superfetch – Traduce gli indirizzi virtuali del kernel in indirizzi fisici utilizzando SystemSuperfetchInformation
Interfaccia driver – Comunica con il driver vulnerabile tramite DeviceIoControl per operazioni sulla memoria fisica
// Acquisisce la mappa di memoria per la traduzione
auto mm = spf::memory_map::current();
// Traduce un indirizzo virtuale del kernel in fisico
void* virt = reinterpret_cast<void*>(0xFFFFF80000001000);
std::uint64_t phys = mm->translate(virt);
// Accede alla memoria fisica tramite il driver
ULONG64 value = Driver.ReadPhysical<ULONG64>(phys);
Solo a scopo educativo e di ricerca. L'accesso non autorizzato a sistemi informatici è illegale. Questo codice dimostra vulnerabilità documentate per la ricerca difensiva sulla sicurezza.
Licenza MIT