
Prueba de concepto de exploit para el controlador de kernel GVCIDrv64.sys de Gigabyte, que logra escalada de privilegios local mediante lectura/escritura arbitraria de memoria física y puertos de E/S.
hola hackers.
GVCIDrv64.sys es el controlador de kernel firmado que se distribuye con la utilidad de BIOS de Gigabyte. Crea \\.\GVCIDrv64 sin descriptor de seguridad, por lo que cualquier usuario local puede abrirlo sin admin, sin UAC. Expone 3 IOCTLs sin ningún control de acceso: mapear 32 MB de memoria física (0x9C406580), desmapear (0x9C406584), y lectura/escritura directa de puertos de E/S de 1/2/4 bytes (0x9C406588).
El truco está en cómo se combinan 2 de ellos. El IOCTL de mapeo lee el BAR0 de un dispositivo PCI y lo mapea, pero el IOCTL de puertos te permite reescribir ese BAR0 primero. Apunta el BAR a cualquier dirección física, llama a map y 32 MB de la RAM que elijas aterrizan en tu proceso. Eso es lectura/escritura física arbitraria construida a partir de 2 características que en teoría eran inofensivas por separado.
Entonces, ¿qué obtenemos? Lectura/escritura arbitraria de memoria física y acceso arbitrario a puertos de E/S desde una cuenta de usuario normal, sin corrupción de memoria y sin mitigaciones contra las que luchar. El exploit escanea la memoria física en busca del proceso System (pid 4), lee su token, sobrescribe el token de su propio proceso y lanza un shell de system. Solo datos, sin shellcode en modo kernel.
2 límites prácticos. BAR0 es de 32 bits, así que la ventana se mantiene por debajo de 4 GB: usa una VM con ≤2 GB de RAM. Y el exploit reescribe brevemente el BAR0 de una NIC, así que deshabilita primero el adaptador de red o una interrupción durante el intercambio te provocará un BSOD.
Probado en Windows 10 x64 22H2 en VMware Workstation (2 GB de RAM). El controlador ya está cargado en máquinas con la utilidad de Gigabyte instalada; el exploit también puede cargarlo vía SCM en una máquina de pruebas.
gcc -O2 -o exploit.exe exploit.c -ladvapi32
exploit.exe
Reportado a Gigabyte en junio de 2026. Gigabyte eliminó el controlador por completo y lo reemplazó con GvVbiosDrv64.sys en GBT_VGA_26.08.24.01; el antiguo controlador vulnerable ya no está presente. Aviso: Security Advisory 2454.
arb_rw.c es una herramienta independiente de lectura/escritura/volcado de memoria física.
SHA256 a2353030d4ea3ad9e874a0f7ff35bbfa10562c98c949d88cabab27102bbb8e48 GVCIDrv64.sys