
Prova de conceito de exploit para o driver de kernel GVCIDrv64.sys da Gigabyte, alcançando escalonamento local de privilégios por meio de leitura/escrita arbitrária de memória física e porta de I/O.
oi hackers.
GVCIDrv64.sys é o driver de kernel assinado que acompanha o utilitário de BIOS da Gigabyte. Ele cria \\.\GVCIDrv64 sem descritor de segurança, então qualquer usuário local pode abri-lo — sem admin, sem UAC. Ele expõe 3 IOCTLs sem nenhum controle de acesso: mapear 32 MB de memória física (0x9C406580), desmapear (0x9C406584), e leitura/escrita bruta de porta de I/O de 1/2/4 bytes (0x9C406588).
O truque está em como 2 deles se combinam. O IOCTL de mapeamento lê o BAR0 de um dispositivo PCI e o mapeia — mas o IOCTL de porta permite reescrever esse BAR0 primeiro. Aponte o BAR para qualquer endereço físico, chame o mapeamento e 32 MB da RAM escolhida por você aterrissam no seu processo. Isso é leitura/escrita física arbitrária construída a partir de 2 recursos que deveriam ser inofensivos individualmente.
Então o que obtemos? Leitura/escrita arbitrária de memória física e acesso arbitrário a portas de I/O a partir de uma conta de usuário comum, sem corrupção de memória e sem mitigações para enfrentar. O exploit varre a memória física em busca do processo System (pid 4), lê seu token, sobrescreve o token do próprio processo e gera um shell de sistema. Data-only, sem shellcode em modo kernel.
2 limites práticos. O BAR0 é de 32 bits, então a janela permanece abaixo de 4 GB — use uma VM com ≤2 GB de RAM. E o exploit reescreve brevemente o BAR0 de uma NIC, então desative o adaptador de rede primeiro ou uma interrupção durante a troca vai te causar um BSOD.
Testado no Windows 10 x64 22H2 no VMware Workstation (2 GB de RAM). O driver já está carregado em máquinas com o utilitário da Gigabyte instalado; o exploit também pode carregá-lo via SCM em uma máquina de teste.
gcc -O2 -o exploit.exe exploit.c -ladvapi32
exploit.exe
Reportado à Gigabyte em junho de 2026. A Gigabyte removeu o driver completamente e o substituiu por GvVbiosDrv64.sys em GBT_VGA_26.08.24.01 — o antigo driver vulnerável não está mais presente. Advisory: Security Advisory 2454.
arb_rw.c é uma ferramenta autônoma de leitura/escrita/dump de memória física.
SHA256 a2353030d4ea3ad9e874a0f7ff35bbfa10562c98c949d88cabab27102bbb8e48 GVCIDrv64.sys