← back
CVE-2010-4398highunder attackCWE-787

CVE-2010-4398

71Vexday Risk Score

Prioritize patching. It under exploitation confirmed by CISA, has a public proof of concept and 1 threat group(s) use it.

ssvc Actcvss 7.8epss 8.7%
from disclosure to weapon0 days
Published on NVDDec 3
1st PoCNov 24
CISA KEV+4133d
exploitation probability
8.7%top 5% of all CVEs
observed exploitation
yesCISA + VulnCheck
1 group(s)3 public exploit(s)
Who exploits it1

Groups known to exploit this vulnerability (MITRE ATT&CK attribution).

Action required by CISAfederal deadline: 2022-04-21

Apply updates per vendor instructions.

Summary

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

Technical detail

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.

How it’s exploited

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.

Versions

Affected
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).
Fixed in
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).

How to protect

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.

How to detect

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.

Researched and written with AI from the vendor advisory and public analysis, with the sources above. Always confirm the fixed version in the official advisory before acting.
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
Affected products
n/a · n/a
⚠ Public resources, to assess the exposure of systems you control or are authorized to test. Test only with authorization.