
Prueba de concepto de escalada de privilegios local que explota los IOCTL de Gigabyte gdrv3.sys para escribir el token SYSTEM en un proceso de usuario mediante una lectura de memoria física no verificada.
hola hackers.
gdrv3.sys es el controlador de kernel firmado que se distribuye con Gigabyte App Center y EasyTune. Crea \.\GIOV3 sin descriptor de seguridad, por lo que cualquier usuario local puede abrirlo sin admin, sin UAC. Dos de sus IOCTLs son toda la historia.
El primero (0xC3502019) dice que lee memoria física. Le das una dirección física, una longitud y un puntero de salida, y copia los bytes allí. El puntero de salida es el problema: el controlador nunca comprueba que sea espacio de usuario. Sin ProbeForWrite, sin comprobación de límites, nada. Así que una "lectura" es en realidad un write-what-where, solo eliges dónde aterriza la respuesta. Lee el token del proceso SYSTEM desde la memoria física, luego apunta la salida directamente a tu propio campo de token EPROCESS. El controlador escribe el token de SYSTEM en tu proceso por ti.
Ese es todo el exploit. Sin corrupción de memoria, sin shellcode en modo kernel. SMEP, SMAP, KVAS, CET y CFG nunca entran en escena porque nada se ejecuta en CPL0 que no deba. Es solo datos, y funcionó en cada ejecución. El segundo par de IOCTLs (0xC3502584 lectura, 0xC3502580 escritura) es el clásico. MSR arbitrario, sin lista blanca de índices. Leer IA32_LSTAR ya rompe KASLR por sí solo, y escribirlo secuestra la entrada de syscall. Necesita trabajo de SMEP/SMAP así que lo mantuve como ruta secundaria, pero incluso por sí solo es malo.
Compila y ejecuta desde una cuenta de usuario normal:
gcc -O2 -o poc.exe poc.c -lpsapi
poc.exe
Probado en Windows 10 x64 22H2 (build 19045). El controlador se distribuye con Gigabyte App Center, así que en muchas placas Gigabyte ya está cargado.
Lo reporté a Gigabyte en junio de 2026 y lo corrigieron. Las compilaciones más recientes ponen un SDDL en el dispositivo que lo restringe a administradores, y añaden una lista blanca en la escritura de MSR. El gdrv3 actual ya no es explotable de esta manera.
