← voltar
CVE-2013-3660highsob ataqueCWE-119

CVE-2013-3660

98Vexday Risk Score

Corrija agora. Ela está sob exploração confirmada pelo CISA, tem exploit funcional público e 1 grupo(s) de ameaça a utilizam.

ssvc Actcvss 7.8epss 40%
da publicação à arma0 dias
Publicada no NVD24 de mai.
1ª PoC21 de mai.
metasploit15 de mai.
CISA KEV+3230d
probabilidade de exploração
40%top 2% das CVEs
exploração observada
simCISA + VulnCheck
1 grupo(s)5 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-18

Apply updates per vendor instructions.

Resumo

Falha de elevação de privilégio local no win32k.sys, o driver de modo kernel que trata operações gráficas do Windows (GDI). A função EPATHOBJ::pprFlattenRec não inicializa corretamente um ponteiro 'next' numa lista de PATHRECORD, e um atacante local que já tem execução de código no sistema pode corromper essa lista para obter escrita em memória arbitrária no kernel e virar SYSTEM. Não é remotamente explorável e não compromete um sistema do zero — serve para escalar privilégio a partir de um processo/usuário já comprometido, o que é exatamente por que ficou popular em cadeias de exploit por quase uma década.

Detalhamento técnico

O bug está em EPATHOBJ::pprFlattenRec, rotina do win32k.sys chamada durante o achatamento de paths (curvas Bézier) via NtGdiFlattenPath/FlattenPath. Ao processar a lista encadeada de PATHRECORD, o código toma um caminho de saída antecipada quando a alocação de um novo nó (via EPATHOBJ::newpathrec, que por sua vez chama HeavyAllocPool) falha — e nesse caminho de erro o ponteiro 'próximo' do nó não é reinicializado antes de a lista ser manipulada. O tipo de falha é uso de ponteiro/variável não inicializada (CWE-119/CWE-457, dependendo da classificação; a CISA cataloga como CWE-119) combinado com uma condição de corrida entre kernel e espaço de usuário.

Como é explorada

O atacante precisa primeiro esgotar a memória paginada do sistema (heap spray de longa duração) para forçar HeavyAllocPool a falhar de forma previsível durante chamadas repetidas a FlattenPath. Isso deixa a thread do kernel presa num loop dentro de EPATHOBJ::bFlatten(), esperando indefinidamente. Enquanto isso, uma segunda thread em espaço de usuário limpa os objetos GDI intermediários e, usando InterlockedExchangePointer, corrige atomicamente o ponteiro 'next' da lista PATHRECORD para apontar a uma estrutura controlada pelo atacante — nesse ponto o kernel, ao retomar a execução, escreve através de um ponteiro que o atacante escolheu, dando primitiva de escrita arbitrária em memória kernel. Tavis Ormandy demonstrou publicamente (mailing list Full Disclosure e Twitter, maio de 2013) um exploit funcional que concedia SYSTEM em todas as versões suportadas do Windows na época, e o código-fonte da técnica foi publicado (inclusive no Exploit-DB). O pré-requisito real é execução de código local já estabelecida — não há vetor remoto nem elevação a partir de rede; o CVSS alto (7.8) reflete o impacto (controle total do sistema), não a facilidade de acesso inicial.

Versões

Afetadas
Windows XP SP2 e SP3; Windows XP Professional x64 Edition SP2; Windows Server 2003 SP2 (x86, x64 e Itanium); Windows Vista SP2 (x86 e x64); Windows Server 2008 SP2 (x86, x64 e Itanium) e Server 2008 R2 SP1; Windows 7 SP1 (x86 e x64); Windows 8 (x86 e x64); Windows Server 2012; Windows RT — todos sem a atualização KB2850851.
Corrigidas em
Corrigido pela atualização KB2850851, distribuída via MS13-053 (09/07/2013), aplicável a todas as edições/arquiteturas listadas acima. Não há versão de software com número de build citado pela Microsoft além do KB da atualização.

Como se proteger

A correção definitiva veio pelo boletim MS13-053 (KB2850851), publicado em 09/07/2013, que corrige a inicialização do ponteiro na cadeia PATHRECORD. Sistemas Windows XP/Server 2003/Vista/Server 2008/7/8/Server 2012 sem esse patch (ou builds equivalentes já fora do ciclo de suporte) permanecem vulneráveis; como essas plataformas majoritariamente atingiram fim de vida, não há atualização disponível para quem ainda roda XP ou Server 2003 sem contrato de suporte estendido. Não existe mitigação de configuração conhecida que neutralize a falha em win32k.sys sem o patch — reduzir superfície de ataque (restringir quem pode executar código local, isolar sessões, usar contas sem privilégio de logon interativo) diminui a chance de exploração mas não elimina a vulnerabilidade em si. Atualizar para uma versão de Windows atualmente suportada e com patches aplicados é a única mitigação real.

Como detectar

Não há assinatura de rede — a exploração é inteiramente local, dentro do kernel. Um sinal indireto é a instabilidade: tentativas malsucedidas de explorar a corrida tendem a gerar BSOD com bugcheck 0x50 (PAGE_FAULT_IN_NONPAGED_AREA) com a pilha de falha apontando para win32k!EPATHOBJ::pprFlattenRec ou win32k!EPATHOBJ::bFlatten — dumps de memória do kernel com esse padrão são indício forte de tentativa de exploração dessa CVE (ou de uma das variantes relacionadas divulgadas junto, CVE-2013-3661 e CVE-2013-3130). Exploração bem-sucedida, por outro lado, não deixa rastro característico: o processo simplesmente passa a rodar com token SYSTEM, o que só é detectável por monitoramento de EDR de mudança de privilégio/token em processos que normalmente não deveriam elevar.

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.
The EPATHOBJ::pprFlattenRec function in win32k.sys in the kernel-mode drivers in Microsoft Windows XP SP2 and SP3, Windows Server 2003 SP2, Windows Vista SP2, Windows Server 2008 SP2 and R2 SP1, Windows 7 SP1, Windows 8, and Windows Server 2012 does not properly initialize a pointer for the next object in a certain list, which allows local users to obtain write access to the PATHRECORD chain, and consequently gain privileges, by triggering excessive consumption of paged memory and then making many FlattenPath function calls, aka "Win32k Read AV Vulnerability."
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/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.