← voltar
CVE-2010-4398highsob ataqueCWE-787

CVE-2010-4398

71Vexday Risk Score

Priorize a correção. Ela está sob exploração confirmada pelo CISA, tem prova de conceito pública e 1 grupo(s) de ameaça a utilizam.

ssvc Actcvss 7.8epss 8.7%
da publicação à arma0 dias
Publicada no NVD3 de dez.
1ª PoC24 de nov.
CISA KEV+4133d
probabilidade de exploração
8.7%top 5% das CVEs
exploração observada
simCISA + VulnCheck
1 grupo(s)3 exploit(s) público(s)
Quem explora1

Grupos conhecidos por explorar esta vulnerabilidade (atribuição MITRE ATT&CK).

Ação exigida pela CISAprazo federal: 2022-04-21

Apply updates per vendor instructions.

Resumo

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).

Detalhamento 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.

Como é explorada

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.

Versões

Afetadas
Windows XP SP2 e SP3; Windows XP Professional x64 Edition SP2; Windows Server 2003 SP2 (x86, x64 e Itanium); Windows Vista SP1 e SP2 (x86 e x64); Windows Server 2008 Gold, SP2 e R2 (x86, x64 e Itanium); Windows 7 (x86 e x64, sem Service Pack).
Corrigidas em
Corrigido pelo boletim MS11-011 (KB2393802). Windows 7 SP1 e Windows Server 2008 R2 SP1 já não são afetados (correção incorporada ao Service Pack antes do boletim).

Como se proteger

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.

Como 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.

Pesquisado e redigido com IA a partir do advisory do fornecedor e de análises públicas, com as fontes acima. Confira sempre a versão corrigida no advisory oficial antes de agir.
Stack-based buffer overflow in the RtlQueryRegistryValues function in win32k.sys in Microsoft Windows XP SP2 and SP3, Windows Server 2003 SP2, Windows Vista SP1 and SP2, Windows Server 2008 Gold, SP2, and R2, and Windows 7 allows local users to gain privileges, and bypass the User Account Control (UAC) feature, via a crafted REG_BINARY value for a SystemDefaultEUDCFont registry key, aka "Driver Improper Interaction with Windows Kernel Vulnerability."
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Produtos afetados
n/a · n/a
⚠ Recursos públicos, para você avaliar a exposição de sistemas que controla ou está autorizado a testar. Teste apenas com autorização.