CVE-2010-4398
Prioriza la corrección. Ella está bajo explotación confirmada por CISA, tiene prueba de concepto pública y 1 grupo(s) de amenaza la utilizan.
Grupos conocidos por explotar esta vulnerabilidad (atribución MITRE ATT&CK).
Apply updates per vendor instructions.
Resumen
Falha de escalonamento de privilégio local no kernel do Windows (win32k.sys), explorável por qualquer usuário sem privilégios para obter execução como SYSTEM e contornar o UAC. O impacto é alto (CVSS 7.8) mas o vetor é estritamente local: o atacante já precisa ter uma sessão de logon na máquina, seja via acesso físico, RDP, ou executando código como usuário comum após outro vetor de entrada (phishing, outro exploit).
Detalle técnico
A função RtlQueryRegistryValues() do kernel é usada por GreEnableEudc(), em win32k.sys, para ler a chave de registro HKCU\EUDC\{codepage}\SystemDefaultEUDCFont, que define fontes de caracteres definidos pelo usuário (EUDC). O código espera encontrar ali um valor REG_SZ (string) e usa o tipo e o tamanho declarados no próprio valor para determinar quanto copiar para um buffer alocado na stack do kernel. RtlQueryRegistryValues() não valida se o tipo e o tamanho reais do dado correspondem ao esperado.
Como a chave EUDC fica dentro do hive HKEY_CURRENT_USER, ela é gravável por padrão por qualquer usuário sem privilégios administrativos. Um atacante local grava um valor do tipo REG_BINARY (em vez do REG_SZ esperado) em SystemDefaultEUDCFont, com tamanho e conteúdo controlados por ele, e então dispara a leitura habilitando o EUDC (via GDI). Isso causa um buffer overflow baseado em stack (CWE-121) dentro do kernel, com dados sob controle do atacante sobrescrevendo memória adjacente na pilha do kernel.
A classificação da Microsoft para a falha é 'Driver Improper Interaction with Windows Kernel Vulnerability' — o defeito real está na validação de dados de entrada do kernel antes da alocação/cópia de memória, não em um driver terceiro especificamente. O bug afeta a família de kernels do Windows NT desde XP/Server 2003 até Windows 7/Server 2008 R2 (pré-SP1), refletindo o código compartilhado do win32k.sys nessas gerações.
Cómo se explota
A exploração exige apenas uma sessão de logon local com privilégios de usuário padrão — nenhuma autenticação administrativa, nenhuma configuração não padrão é necessária, já que a chave EUDC é gravável por padrão em qualquer instalação. O atacante escreve o valor malicioso em HKCU\EUDC\{codepage}\SystemDefaultEUDCFont e aciona a leitura pelo subsistema gráfico (GDI), fazendo o kernel processar o dado malformado.
Prova de conceito pública foi divulgada em 24/11/2010 (atribuída a um pesquisador identificado como 'noobpwnftw'), funcional em Windows Vista, 7 e Server 2008; XP e Server 2003 foram avaliados como potencialmente afetados mas com estrutura de chave de registro diferente (sem HKCU\EUDC por padrão), exigindo adaptação do vetor. Pesquisadores do ISC/SANS confirmaram o funcionamento do PoC, mas relataram instabilidade — o overflow no kernel é sensível à versão exata do win32k.sys, e em builds incompatíveis o resultado é BSOD (falha do kernel) em vez de execução de código controlada.
A vulnerabilidade está no catálogo KEV da CISA, indicando exploração confirmada em ambiente real — a divulgação inicial via ISC não relatava exploração ativa no momento do disclosure, mas isso mudou. Na prática, este tipo de falha é usado como segundo estágio: após comprometer uma máquina com privilégios de usuário comum (phishing, exploit de aplicação, RDP com credenciais roubadas), o atacante usa esta CVE para virar SYSTEM e desabilitar defesas, incluindo o próprio UAC.
Versiones
Cómo protegerse
A correção definitiva é o boletim MS11-011 (KB2393802), publicado em 08/02/2011, que ajusta o kernel para validar corretamente os dados fornecidos pelo usuário antes de alocar memória. Sistemas Windows 7 SP1 e Windows Server 2008 R2 SP1 já não são afetados — o Service Pack incorporou a correção antes mesmo do boletim isolado, segundo a própria Microsoft.
Se a atualização não puder ser aplicada imediatamente, o CERT/CC recomendou como paliativo restringir a ACL da chave de registro EUDC para impedir que usuários comuns modifiquem seu tipo e conteúdo — isso precisa ser feito tanto em HKEY_CURRENT_USER quanto em cada subchave sob HKEY_USERS\*, já que a chave existe por perfil de usuário. Esse controle bloqueia especificamente o vetor divulgado publicamente (via SystemDefaultEUDCFont), mas o próprio CERT/CC alertou que RtlQueryRegistryValues() pode ser chamada pelo kernel para ler outras chaves de registro graváveis por usuários, então não há garantia de que essa seja a única superfície de ataque da mesma classe de bug.
Não há mitigação de rede eficaz (a falha é estritamente local, sem componente remoto), e desabilitar UAC não reduz o risco — pelo contrário, a exploração já contorna o UAC como parte do próprio ataque.
Cómo detectar
Não há um indicador de rede a monitorar, já que a exploração é puramente local. Em ambiente de EDR ou logging avançado, o sinal a procurar é a gravação de um valor de registro do tipo REG_BINARY (em vez de REG_SZ) na chave HKCU\EUDC\{codepage}\SystemDefaultEUDCFont por um processo de usuário não administrativo, seguida de atividade que force o carregamento de EUDC pelo subsistema gráfico. Crashes recorrentes de win32k.sys (BSOD) em máquinas com essa versão de kernel também são um sinal indireto relatado por pesquisadores, já que builds incompatíveis com o PoC público tendem a falhar em vez de executar código com sucesso — mas isso não distingue exploração de instabilidade genuína do sistema.