← voltar
CVE-2017-0213highsob ataqueransomware

CVE-2017-0213

95Vexday Risk Score

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

ssvc Actcvss 7.3epss 84%
da publicação à arma5 dias
Publicada no NVD12 de mai.
1ª PoC+5d
CISA KEV+1781d
probabilidade de exploração
84%top 1% das CVEs
exploração observada
simCISA + VulnCheck
2 grupo(s)13 exploit(s) público(s)
Quem explora2

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 type confusion (CWE-843) no marshaler COM do Windows, especificamente na rotina que reconstrói interfaces remotas via RemQueryInterface2 (RQI2). Um atacante com acesso local e privilégios baixos pode enganar um processo mais privilegiado — como um serviço broker ou o BITS — para que ele use um ponteiro de interface do tipo errado, abrindo caminho para elevação de privilégio local. Descoberta pelo Google Project Zero, está no catálogo KEV da CISA desde 2022 e tem PoC público desde o dia da divulgação, mas exige engenharia de exploração não trivial — não é um bug 'run and win'.

Detalhamento técnico

O bug está em CStdMarshal::Finish_RemQIAndUnmarshal2. Quando um objeto COM fora de processo (OOP) é consultado via QueryInterface e o proxy padrão decide usar RemQueryInterface2 em vez de RemQueryInterface, o resultado vem como uma estrutura MInterfacePointer (um OBJREF completo) em vez do STDOBJREF simples usado por RQI clássico. CStdMarshal::UnmarshalInterface desempacota esse OBJREF e cria um proxy local, mas usa o IID contido no próprio stream do OBJREF — não o IID que o chamador originalmente pediu. Não há verificação cruzada entre o IID solicitado e o IID efetivamente materializado.

Resultado: o chamador recebe um objeto de um tipo diferente do que esperava, mas continua chamando métodos da interface original nele. Isso é type confusion clássico — chamadas em offsets de vtable que não correspondem à implementação real do objeto.

O uso de RQI2 é ativado por qualquer objeto que se registre com o Aggregate Standard Marshaler (usado para handlers in-process com marshaling customizado por interface). Como esse marshaler é um componente central e confiável do COM, ele não é bloqueado por configurações como EOAC_NO_CUSTOM_MARSHAL, que normalmente restringiriam marshaling customizado não confiável.

O atacante controla o conteúdo do OBJREF retornado — inclusive o IID declarado nele — bastando expor um objeto marshaled com esse marshaler para um chamador mais privilegiado que faça QueryInterface sobre ele.

Como é explorada

Pré-requisito real: acesso local autenticado (mesmo com privilégios baixos) e execução de uma aplicação especialmente criada — não há vetor remoto documentado pelo fornecedor, e a CVSS reflete isso (AV:L, PR:L, UI:R). O padrão de exploração exige que um processo mais privilegiado — serviço do sistema ou broker de sandbox — chame QueryInterface em um objeto COM controlado pelo atacante que esteja marcado para usar o Aggregate Standard Marshaler, forçando o uso de RQI2.

O PoC público (Google Project Zero, replicado no Exploit-DB) demonstra a cadeia completa usando o serviço BITS: o atacante registra um callback via SetNotifyInterface; o BITS impersona o usuário chamador antes de fazer QueryInterface nesse callback; o atacante devolve um OBJREF cujo IID aponta para uma interface Automation (PSOAInterface/PSDispatch) em vez da interface BITS esperada. Isso aciona o mecanismo de auto-proxy do OLEAUT32, que carrega uma type library (TLB) para construir o proxy — e como o BITS está impersonando o atacante nesse momento, um redirecionamento de drive controlado pelo atacante pode fazer o serviço carregar um arquivo TLB arbitrário em vez do legítimo. O formato TLB é conhecidamente inseguro e permite controle de fluxo de execução no contexto do serviço privilegiado.

A exploração em memória (corrupção direta via type confusion) é dificultada por CFG em sistemas modernos; o caminho documentado é lógico, abusando de comportamento de projeto do OLE Automation, não de corrupção de memória bruta. Isso eleva a barreira de entrada — não é um exploit trivial de reproduzir sem entender o subsistema COM — mas a presença no KEV da CISA confirma exploração documentada, e por isso a correção é tratada como prioritária.

Versões

Afetadas
Windows Server 2008 SP2 e R2 SP1; Windows 7 SP1; Windows 8.1; Windows Server 2012 (Gold) e R2; Windows RT 8.1; Windows 10 Gold, 1511, 1607 e 1703; Windows Server 2016 — conforme descrição oficial da Microsoft/MSRC.
Corrigidas em
Corrigida pela Microsoft nas atualizações de segurança de maio de 2017 (mesmo ciclo da divulgação pública). O KB específico varia por versão/edição do Windows; não foi possível confirmar os números exatos nas fontes consultadas — consulte o Security Update Guide da Microsoft para o CVE-2017-0213 filtrando pela versão exata do sistema.

Como se proteger

A correção veio da Microsoft no boletim de segurança de maio de 2017 (mesmo ciclo de divulgação da CVE). Não há nas fontes consultadas o número exato de KB por versão de Windows — para aplicar o patch correto, use o Security Update Guide da própria Microsoft filtrando por CVE-2017-0213 e pela versão/edição exata do sistema (Windows 7 SP1, 8.1, 10 Gold/1511/1607/1703, Server 2008 SP2/R2 SP1, Server 2012/R2, Server 2016), já que os pacotes cumulativos variam por branch.

Sistemas fora de suporte (Windows 7, Server 2008/2012 sem ESU vigente) que não puderem ser atualizados não têm workaround documentado nas fontes analisadas que neutralize a falha em si — a única mitigação estrutural real é reduzir a superfície de escalonamento: restringir quem pode executar código arbitrário localmente, aplicar controle de aplicação (allowlisting) para impedir a execução do binário de exploração, e monitorar/limitar serviços que impersonam usuários ao processar callbacks COM (como BITS). Segmentação de rede e firewall não mitigam esta falha, pois o vetor é estritamente local.

Não existe mitigação via GPO ou flag de registro documentada para esta CVE nas fontes consultadas — não trate 'desabilitar BITS' como correção definitiva, já que o mecanismo de type confusion no marshaler COM é genérico e pode, em tese, ser acionado por outros consumidores de interfaces COM com marshaling customizado, não apenas pelo BITS usado no PoC.

Como detectar

Não há assinatura de rede aplicável, pois a exploração é local e ocorre inteiramente via chamadas COM/RPC internas ao host. Sinais possíveis em endpoint: criação incomum de mapeamentos de dispositivo/drive (DefineDosDevice) por processo de usuário pouco antes de atividade do serviço BITS (qmgr.dll/svchost.exe) tentando carregar arquivos de type library (.tlb) em caminhos não padrão; chamadas SetNotifyInterface para BITS seguidas de acesso a caminhos de sistema redirecionados. Como não há PoC de exploração remota nem indicadores de rede publicados, e o comportamento imita uso legítimo de APIs COM, a detecção confiável depende de telemetria de endpoint granular (ETW, Sysmon com regras específicas para criação de objetos de dispositivo e carregamento de DLL/TLB fora de caminhos esperados) — não existe um IOC único e confiável documentado publicamente para esta CVE.

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.
Windows COM Aggregate Marshaler in Microsoft Windows Server 2008 SP2 and R2 SP1, Windows 7 SP1, Windows 8.1, Windows Server 2012 Gold and R2, Windows RT 8.1, Windows 10 Gold, 1511, 1607, and 1703, and Windows Server 2016 allows an elevation privilege vulnerability when an attacker runs a specially crafted application, aka "Windows COM Elevation of Privilege Vulnerability". This CVE ID is unique from CVE-2017-0214.
CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H
⚠ Recursos públicos, para você avaliar a exposição de sistemas que controla ou está autorizado a testar. Teste apenas com autorização.