
Proof-of-concept di exploit per il driver kernel GVCIDrv64.sys di Gigabyte, che consente l'escalation locale dei privilegi tramite lettura/scrittura arbitraria della memoria fisica e delle porte I/O.
ciao hacker.
GVCIDrv64.sys è il driver kernel firmato che viene distribuito con l'utility BIOS di Gigabyte. Crea \\.\GVCIDrv64 senza security descriptor, quindi qualsiasi utente locale può aprirlo senza admin, senza UAC. Espone 3 IOCTL senza alcun controllo di accesso: mappa 32 MB di memoria fisica (0x9C406580), smappa (0x9C406584), e lettura/scrittura raw delle porte I/O di 1/2/4 byte (0x9C406588).
Il trucco sta in come 2 di essi si combinano. L'IOCTL di map legge il BAR0 di un dispositivo PCI e lo mappa, ma l'IOCTL delle porte ti permette di riscrivere prima quel BAR0. Punta il BAR su qualsiasi indirizzo fisico, chiama map e 32 MB della RAM che hai scelto finiscono nel tuo processo. Si tratta di lettura/scrittura fisica arbitraria costruita da 2 funzionalità che dovevano essere ciascuna innocua.
Quindi cosa otteniamo? Lettura/scrittura arbitraria della memoria fisica e accesso arbitrario alle porte I/O da un normale account utente, senza corruzione di memoria e senza mitigazioni da contrastare. L'exploit scansiona la memoria fisica alla ricerca del processo System (pid 4), legge il suo token, sovrascrive il token del proprio processo e genera una shell di sistema. Data-only, nessuno shellcode in kernel mode.
2 limiti pratici. BAR0 è a 32-bit, quindi la finestra resta sotto i 4 GB: usa una VM con ≤2 GB di RAM. E l'exploit riscrive brevemente il BAR0 di una NIC, quindi disabilita prima la scheda di rete, altrimenti un interrupt durante lo scambio ti causerà un BSOD.
Testato su Windows 10 x64 22H2 in VMware Workstation (2 GB di RAM). Il driver è già caricato sulle macchine con l'utility di Gigabyte installata; l'exploit può anche caricarlo tramite SCM su una macchina di test.
gcc -O2 -o exploit.exe exploit.c -ladvapi32
exploit.exe
Segnalato a Gigabyte a giugno 2026. Gigabyte ha rimosso completamente il driver e lo ha sostituito con GvVbiosDrv64.sys in GBT_VGA_26.08.24.01: il vecchio driver vulnerabile non è più presente. Advisory: Security Advisory 2454.
arb_rw.c è uno strumento standalone di lettura/scrittura/dump della memoria fisica.
SHA256 a2353030d4ea3ad9e874a0f7ff35bbfa10562c98c949d88cabab27102bbb8e48 GVCIDrv64.sys