CVE-2018-19323
Prioriza la corrección. Ella está bajo explotación confirmada por CISA y tiene prueba de concepto pública.
Apply updates per vendor instructions.
Resumen
Falha no driver de baixo nível GDrv, distribuído junto com utilitários da GIGABYTE para placas-mãe e placas de vídeo (APP Center, AORUS Graphics Engine, XTREME Gaming Engine, OC GURU II), que expõe uma IOCTL capaz de ler e escrever Machine Specific Registers (MSRs) do processador sem qualquer controle de acesso. Qualquer processo local, mesmo sem privilégios, consegue abrir handle para o driver e escrever em MSRs sensíveis, o que é usado como primitiva para execução de código em modo kernel e escalada de privilégio. O CVSS 9.8 (AV:N) publicado não reflete a realidade: o próprio pesquisador classifica a falha como "Remotely Exploitable: No / Locally Exploitable: Yes" — é uma vulnerabilidade estritamente local.
Detalle técnico
CVE-2018-19323 é uma das quatro falhas reportadas no mesmo advisory (CORE-2018-0007, SecureAuth Labs) sobre os drivers GPCIDrv e GDrv que a GIGABYTE embute em seus utilitários de monitoramento e overclock. A classe de falha é CWE-782 (Exposed IOCTL with Insufficient Access Control): o driver cria um device object acessível por qualquer processo (inclusive em integridade baixa) e implementa códigos de IOCTL que executam operações privilegiadas — nesse caso, leitura e escrita de MSRs via as instruções RDMSR/WRMSR — sem validar quem está chamando nem restringir quais registradores podem ser tocados.
MSRs controlam comportamento crítico da CPU, incluindo os registradores que apontam para o handler de SYSCALL/SYSENTER (IA32_LSTAR, IA32_SYSENTER_EIP). Um atacante que consiga escrever nesses registradores redireciona a rotina que o processador invoca ao entrar em modo kernel para código próprio, obtendo execução arbitrária em ring 0 a partir de um processo não privilegiado em ring 3.
O mesmo advisory documenta, nas CVEs vizinhas, primitivas relacionadas no mesmo par de drivers: CVE-2018-19320 é um memcpy arbitrário entre memória virtual (IOCTL 0xC3502808 no driver GIO/GDrv), e CVE-2018-19322 é leitura/escrita de portas de I/O mapeadas. As quatro CVEs compartilham a mesma causa raiz — drivers de suporte a hardware que expõem operações privilegiadas de CPU/memória a qualquer chamador sem checagem de token, ACL ou modo de integridade.
Vale notar uma divergência entre a descrição oficial da CVE ("AORUS GRAPHICS ENGINE before 1.57", "XTREME GAMING ENGINE before 1.26") e o advisory original da SecureAuth, que lista as versões vulneráveis testadas como AORUS GRAPHICS ENGINE 1.33 e anteriores e XTREME GAMING ENGINE 1.25 e anteriores — a numeração maior na descrição oficial provavelmente reflete as versões corrigidas pelo fornecedor após a divulgação, e não novas versões vulneráveis.
Cómo se explota
Exploração exige execução de código local no Windows, com o utilitário GIGABYTE afetado instalado e o driver GDrv carregado — não há vetor remoto, apesar do vetor CVSS AV:N publicado. Não é necessária autenticação privilegiada nem interação do usuário: o processo malicioso só precisa abrir um handle para o device (\\.\GIO ou equivalente) via CreateFile e enviar o código de IOCTL correspondente à operação de MSR com DeviceIoControl, algo que qualquer usuário local, inclusive em integridade baixa, consegue fazer por padrão.
Na prática, isso é usado como estágio de escalada de privilégio dentro de uma cadeia maior: um atacante com execução de código em user-mode (via outro exploit, phishing com payload, ou acesso físico/RDP a uma máquina com o utilitário instalado) usa o driver como "living-off-the-land LPE" — reaproveitando um driver assinado e legítimo para ganhar execução em kernel, técnica equivalente a BYOVD (Bring Your Own Vulnerable Driver), comum em ransomware e malware que precisa desabilitar EDR ou rodar com privilégios de SYSTEM/kernel.
A CISA incluiu a CVE no catálogo KEV em 24/10/2022 (prazo de correção 14/11/2022), confirmando exploração no mundo real, mas o catálogo não indica uso documentado em campanhas de ransomware nem detalha o ator ou a cadeia específica observada.
Versiones
Cómo protegerse
O advisory original registra que, no momento da divulgação, "the vendor did not provide fixes or workaround information". A GIGABYTE posteriormente publicou um aviso próprio de segurança (gigabyte.com/Support/Security/1801) e disponibiliza utilitários atualizados na página de suporte de gráficos, mas as fontes consultadas não confirmam números de versão corrigida para GIGABYTE APP Center nem para OC GURU II — a descrição oficial da CVE indica que AORUS GRAPHICS ENGINE 1.57 e XTREME GAMING ENGINE 1.26 já não seriam vulneráveis, mas isso não foi verificado contra um changelog oficial do fornecedor nas fontes disponíveis.
Se atualizar não for viável, o paliativo real é remover o software GIGABYTE de monitoramento/overclock (APP Center, AORUS Graphics Engine, Xtreme Gaming Engine, OC GURU II) e garantir que o driver GDrv/GIO/GPCIDrv não esteja carregado — verificar serviços e drivers instalados e desinstalar o utilitário elimina a superfície de ataque, ao custo de perder as funções de controle de LED, curva de ventoinha e overclock que o software oferece. Bloquear o carregamento do driver via política de controle de aplicação (assinatura, hash, ou lista de drivers vulneráveis conhecidos) também mitiga, mas exige suporte a esse tipo de controle no ambiente.
Não funciona como mitigação simplesmente restringir a conta de usuário do sistema operacional: o driver aceita chamadas de processos com privilégios baixos por design, então a falha não depende do nível de privilégio do usuário logado, apenas de o driver estar carregado e acessível.
Cómo detectar
Não há log nativo do Windows que registre chamadas de IOCTL a drivers de terceiros por padrão. Detecção viável passa por monitoramento em nível de EDR/kernel: alertar sobre a criação de handles para os devices \\.\GIO, \\.\GPCIDrv64 (ou equivalentes) por processos que não sejam os utilitários GIGABYTE legítimos, e sobre chamadas DeviceIoControl com os códigos de controle documentados no advisory (ex.: IOCTL_GIO_MEMCPY 0xC3502808, IOCTLs de porta 0x9C402588/0x9C40258C). A presença do próprio driver vulnerável carregado no sistema (via listagem de drivers/serviços) já é o indicador mais confiável de exposição, independentemente de tentativa de exploração ter sido observada.