
Exploração de leitura/escrita arbitrária de memória física usando ThrottleStop.sys (CVE-2025-7771) com tradução de endereços do superfetch - pesquisa de segurança do kernel Windows
Ferramenta de pesquisa que demonstra acesso à memória física através da tradução de endereço virtual para físico combinada com exploração de driver vulnerável.
Este projeto explora o gerenciamento de memória de baixo nível do Windows combinando a técnica superfetch para tradução de endereços com acesso à memória física baseado em IOCTL. Construído para entender a interação modo kernel/modo usuário e os internos do subsistema de memória.
ID CVE: CVE-2025-7771
Componente: ThrottleStop.sys (driver assinado da TechPowerUp LLC)
Versão Afetada: ThrottleStop 3.0.0.0 e potencialmente outras
Tipo de Vulnerabilidade: IOCTL exposto com Controle de Acesso Insuficiente (CWE-782)
Pontuação CVSS: 8.7 (Alto) – Kaspersky Labs
Impacto: Escalação de Privilégios Local (LPE)
O driver ThrottleStop.sys expõe dois manipuladores IOCTL que permitem operações de leitura e escrita completamente arbitrárias na memória física através de MmMapIoSpace. Não há verificações de validação, restrições de limites ou controles de acesso nessas interfaces. Qualquer aplicação em modo usuário pode especificar qualquer endereço físico e ler ou escrever dados arbitrários.
Este acesso irrestrito permite:
A natureza arbitrária do acesso significa que um atacante tem controle completo sobre a memória física sem quaisquer restrições impostas pelo driver.
A exploração segue este padrão:
\\.\ThrottleStopNtQuerySystemInformation para localizar o endereço base do kernelMmMapIoSpaceMalware do mundo real tem utilizado esta vulnerabilidade para desabilitar produtos de segurança corrigindo funções do kernel como NtAddAtom para sequestrar o fluxo de execução.
Este projeto demonstra os componentes técnicos de tal cadeia de ataque para fins educacionais:
Integração Superfetch – Traduz endereços virtuais do kernel para endereços físicos usando SystemSuperfetchInformation
Interface do Driver – Comunica-se com o driver vulnerável através de DeviceIoControl para operações de memória física
// 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);
Apenas para fins educacionais e de pesquisa. O acesso não autorizado a sistemas de computador é ilegal. Este código demonstra vulnerabilidades documentadas para pesquisa defensiva de segurança.
Licença MIT