CVE-2018-8453
Patch now. It under exploitation confirmed by CISA and has a working public exploit.
Apply updates per vendor instructions.
Summary
Vulnerabilidade de elevação de privilégio local no win32k.sys do Windows, causada por use-after-free em win32kfull!xxxDestroyWindow. Foi descoberta pela Kaspersky Lab como zero-day, explorada in-the-wild em ataques direcionados no Oriente Médio antes da correção, e está no catálogo KEV da CISA por exploração confirmada. Não é RCE remota: o atacante precisa já executar código no host para escalar de usuário comum a SYSTEM.
Technical detail
A falha (CWE-404, liberação/gestão indevida de recurso, consistente com um use-after-free) está na função kernel win32kfull!xxxDestroyWindow e na syscall NtUserSetWindowFNID. O código de destruição de janela altera o campo fnid (offset 0x02a na estrutura tagWND) sem verificar corretamente se o objeto já foi marcado como FNID_FREED. Isso permite que uma janela do tipo scrollbar, destruída e liberada pelo garbage collector do kernel, continue sendo referenciada pelo sistema com um fnid trocado para FNID_BUTTON em vez de FNID_FREED — ou seja, a memória é devolvida ao pool mas ainda tratada como objeto válido de outro tipo.
O exploit documentado pela Kaspersky instala hooks em três funções de callback usermode (fnDWORD, fnNCDESTROY e fnINLPCREATESTRUCT) sobrescrevendo ponteiros na KernelCallbackTable do processo. Ao processar uma mensagem WM_LBUTTONDOWN, o hook em fnDWORD chama DestroyWindow na janela pai; durante a execução, o hook em fnNCDESTROY invoca NtUserSetWindowFNID e explora a checagem ausente para reciclar a memória da scrollbar sem que ela seja marcada como liberada.
A falha é análoga a CVE-2017-0263, usada pelo grupo Sofacy em 2017 junto com um exploit de PostScript, o que sugere reaproveitamento de técnica entre atores. Após a corrupção inicial, o atacante controla o conteúdo da memória liberada via heap spraying com objetos GDI bitmap, obtendo leitura/escrita arbitrária no kernel — primitiva poderosa o suficiente para funcionar mesmo em builds recentes do Windows 10 (RS4) com Low Fragmentation Heap reforçado.
How it’s exploited
Pré-requisito real: execução de código local no host — a CVSS oficial marca PR:N (o processo inicial não precisa de privilégios elevados) e UI:R (interação do usuário), o que é compatível com o cenário observado: um instalador de malware executa o exploit para obter privilégios necessários antes de persistir no sistema. Não há vetor de rede; não é explorável remotamente sem já haver execução de código na máquina-alvo.
No caso documentado pela Kaspersky, o exploit fazia parte do primeiro estágio de um instalador, usado para ganhar privilégios SYSTEM e viabilizar persistência de um implante sofisticado (payload criptografado com AES-256-CBC ligado ao SMBIOS UUID da máquina vítima, dificultando análise fora do host original). O código do exploit foi descrito como de alta qualidade, com múltiplas rotinas de heap spray específicas para diferentes builds do Windows, indicando desenvolvimento profissional visando ampla compatibilidade.
Após a corrupção de memória e obtenção de read/write arbitrário no kernel via primitivas de bitmap GDI, o payload final rouba o token de um processo SYSTEM (via EPROCESS) e o troca pelo token do processo do atacante — técnica clássica de token-stealing para elevação completa. A exploração ativa registrada foi limitada, direcionada, e antecede a correção (zero-day); o registro no KEV da CISA em 2022 reflete exploração confirmada, não necessariamente contínua ou massiva.
Versions
How to protect
A correção definitiva é aplicar as atualizações de segurança da Microsoft do Patch Tuesday de outubro de 2018 (9 de outubro de 2018), que corrigem CVE-2018-8453 nas versões afetadas listadas no advisory (Windows 7, 8.1, RT 8.1, 10 e Server 2008/2008 R2/2012/2012 R2/2016/2019). Os números de KB específicos por versão/edição devem ser confirmados no advisory oficial do MSRC, já que variam por build e branch de suporte — não há um único KB universal para essa CVE.
Não há workaround de configuração documentado pelo fornecedor que neutralize a falha sem o patch: é um bug de kernel em win32k.sys, componente central do subsistema gráfico do Windows, sem flag de desativação viável em produção. Como controle compensatório, reduzir a superfície de execução de código não confiável (EDR com bloqueio de exploração de kernel, AppLocker/WDAC restringindo execução de binários não assinados, princípio de menor privilégio para contas) diminui a chance de o estágio inicial do ataque (execução do instalador malicioso) ocorrer — mas não elimina a vulnerabilidade em si.
Sistemas fora de suporte (Windows 7, Server 2008/2008 R2 sem ESU) não recebem mais patch regular; nesses casos a única mitigação real é isolamento de rede e controles de detecção, já que o produto não é mais corrigido pelo fornecedor.
How to detect
Sinal mais forte é a presença de malware que sobrescreve entradas da KernelCallbackTable do processo (hooks em fnDWORD, fnNCDESTROY, fnINLPCREATESTRUCT) e que gera padrões de heap spray com múltiplos objetos GDI bitmap antes de uma chamada a DestroyWindow/NtUserSetWindowFNID — comportamento observável por soluções de prevenção de exploração de kernel e engines comportamentais (a Kaspersky detectou o ataque original via Automatic Exploit Prevention, com verdicts como HEUR:Exploit.Win32.Generic e PDM:Exploit.Win32.Generic). Não há assinatura de rede, pois a exploração é inteiramente local no kernel; monitoramento deve focar em telemetria de EDR (chamadas anômalas a APIs win32k, criação/destruição de janelas fora de padrão de UI, elevação de token para SYSTEM por processo não administrativo) e amostras de malware correspondentes ao módulo Metasploit público ou à família de exploit descrita pela Kaspersky.