← voltar
CVE-2017-8759highsob ataqueCWE-94

CVE-2017-8759

98Vexday 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.8epss 87%
da publicação à arma0 dias
Publicada no NVD13 de set.
1ª PoC13 de set.
CISA KEV+1512d
probabilidade de exploração
87%top 1% das CVEs
exploração observada
simCISA + VulnCheck
2 grupo(s)33 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-05-03

Apply updates per vendor instructions.

Resumo

Falha de execução remota de código no Microsoft .NET Framework, explorada in-the-wild desde setembro de 2017 via documentos do Office (RTF no Word, e depois demonstrado também via PPSX/PPTX no PowerPoint). O problema está na camada de parsing de WSDL do .NET, não no Office em si — o Office é só o vetor de entrega que aciona o componente vulnerável. Está no catálogo KEV da CISA com exploração confirmada e PoC pública amplamente disponível, o que a torna prioridade mesmo tendo CVSS 'apenas' 7.8 e exigir interação do usuário.

Detalhamento técnico

A vulnerabilidade está no método IsValidUrl da classe WsdlParser, dentro de System.Runtime.Remoting, componente do .NET Framework responsável por interpretar arquivos WSDL (Web Services Description Language) durante a geração de proxies de cliente SOAP. Quando um WSDL contém múltiplas definições de endereço, o parser normalmente comenta as definições subsequentes ao gerar o código-fonte C# correspondente (via PrintClientProxy). Antes da correção, IsValidUrl garante apenas que a string esteja entre aspas, mas não filtra sequências CRLF (\r\n).

Isso permite que um atacante, controlando o conteúdo do WSDL, injete uma sequência CRLF seguida de código C# arbitrário dentro da string que será escrita no arquivo .cs gerado. Esse arquivo é posteriormente compilado pelo csc.exe e carregado como DLL pelo processo que solicitou o proxy — no cenário explorado, o Microsoft Word ou PowerPoint. O resultado é execução de código no contexto do usuário que abriu o documento, sem exigir qualquer exploração de memória: é uma falha de validação de entrada (CWE-20, conforme classificado pela CISA) que se transforma em geração e compilação de código atacante-controlado.

O vetor de entrega documentado pela FireEye (que descobriu a exploração em campanhas reais) usa um objeto OLE2Link/StdOleLink embutido em um arquivo RTF, cujo moniker aponta para uma URL remota servindo o WSDL malicioso — mecanismo de ativação de moniker similar ao usado na família CVE-2017-0199. A NCC Group demonstrou, em análise pública, que a mesma técnica de moniker é portável para o formato PPSX/PPTX do PowerPoint, usando um 'OLE Verb' de animação para ativar automaticamente o objeto vinculado ao abrir a apresentação — evidenciando que a superfície de exploração não se limita ao RTF, ao contrário do que a cobertura inicial sugeria.

Como é explorada

O vetor prático é um documento malicioso (RTF para Word, ou PPSX/PPTX para PowerPoint) enviado por e-mail ou disponibilizado para download. O documento contém um objeto OLE vinculado (StdOleLink) cujo caminho foi substituído por um moniker que aponta para um recurso remoto controlado pelo atacante. Ao abrir o arquivo — no PPSX isso pode ocorrer de forma automática, sem clique adicional, pois o slideshow inicia e o 'OLE Verb' ativa o objeto — a aplicação Office solicita o recurso remoto, que devolve um WSDL contendo a injeção CRLF. O .NET Framework compila esse WSDL malformado, executando o payload injetado.

Pré-requisito real: interação do usuário para abrir o arquivo (o CVSS reflete isso com UI:R) e acesso de rede de saída do host até o servidor do atacante (para buscar o WSDL/HTA/SCT remoto) — não há exploração puramente de rede sem essa etapa de entrega e abertura. AV:L no vetor CVSS reflete que a exploração ocorre através do processamento local do arquivo pela aplicação, não por um serviço de rede exposto. Não é necessária autenticação nem configuração fora do padrão: qualquer instalação padrão do .NET Framework nas versões afetadas, combinada com Office instalado, é suscetível.

A exploração já foi observada em campanhas reais antes da divulgação pública (documentada pela FireEye), e existe toolkit público (bhdresh/CVE-2017-8759) que automatiza a geração do RTF malicioso e a entrega de payload via Metasploit/meterpreter, reduzindo a barreira técnica para reprodução. O resultado final é execução de código arbitrário no contexto do usuário — de onde normalmente segue movimentação lateral, persistência ou entrega de segunda etapa (o CISA KEV não indica uso confirmado em ransomware, mas classifica como 'Unknown', não descartado).

Versões

Afetadas
.NET Framework 2.0, 3.5, 3.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2 e 4.7 (conforme descrição oficial da Microsoft).
Corrigidas em
Corrigida pelos boletins de segurança da Microsoft de setembro de 2017, aplicados via atualizações cumulativas específicas por combinação de sistema operacional Windows e versão do .NET Framework instalada. Não há um número de KB único válido para todas as combinações; consultar o advisory oficial da Microsoft (MSRC) para o KB correspondente ao seu ambiente.

Como se proteger

A correção definitiva é aplicar as atualizações de segurança da Microsoft de setembro de 2017 para as versões afetadas do .NET Framework (2.0, 3.5, 3.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7), distribuídas via Windows Update / Microsoft Update Catalog conforme a combinação de sistema operacional e versão do .NET instalada. O advisory da Microsoft (MSRC) lista os KBs específicos por combinação de Windows e versão do .NET — como cada ambiente tem uma combinação diferente, o número de KB exato varia e deve ser confirmado no boletim oficial para o seu SO/versão, não há uma única 'versão corrigida' numérica do .NET Framework que substitua as anteriores da mesma forma que um patch de aplicação.

Como paliativo quando a atualização não é imediata: bloquear ou restringir a execução de csc.exe e a criação de proxies SOAP a partir de processos do Office (via AppLocker, WDAC ou regras de EDR) reduz a superfície, já que a cadeia de exploração depende da compilação dinâmica de C#. Desabilitar a abertura automática de conexões externas em documentos do Office (bloqueio de rede de saída para processos winword.exe/powerpnt.exe, ou Attack Surface Reduction rules que bloqueiam criação de processos filho por aplicações do Office) também mitiga o vetor de entrega, sem corrigir a falha em si.

Não funciona como mitigação: desabilitar apenas macros do Office — a exploração não usa VBA/macro, usa ativação de objeto OLE/moniker, então políticas de bloqueio de macro não têm efeito algum aqui. Da mesma forma, atualizar somente o Office sem atualizar o .NET Framework não resolve, pois a vulnerabilidade está no framework, não no Office.

Como detectar

Sinais de tentativa de exploração incluem: documentos RTF ou de apresentação (PPSX/PPTX) contendo objetos OLE2Link/StdOleLink cujo destino, em vez de um caminho de arquivo local, é uma URL externa ou moniker do tipo script:/http: apontando para recurso remoto (visível ao inspecionar os arquivos .rels dentro do pacote OOXML ou os campos de objeto vinculado em RTF); tráfego de saída de winword.exe ou powerpnt.exe para hosts externos solicitando arquivos com conteúdo WSDL, .hta ou .sct; e, no host, execução de csc.exe (compilador C#) tendo como processo pai winword.exe, powerpnt.exe ou explorer.exe pouco depois da abertura do documento — essa cadeia de processo é o indicador mais confiável, já que a compilação dinâmica é etapa obrigatória da exploração.

Como a técnica de moniker é compartilhada com outras vulnerabilidades da mesma família (ex. CVE-2017-0199), regras de detecção baseadas apenas em 'presença de OLE2Link' geram falsos positivos/negativos entre essas CVEs distintas — a NCC Group destaca esse ponto explicitamente; é necessário correlacionar com o conteúdo do recurso remoto buscado (WSDL malformado com CRLF) ou com a cadeia de processo csc.exe para diferenciar.

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.
Microsoft .NET Framework 2.0, 3.5, 3.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2 and 4.7 allow an attacker to execute code remotely via a malicious document or application, aka ".NET Framework Remote Code Execution Vulnerability."
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
PoCs públicas encontradas33
exploitdbwww.exploit-db.com/exploits/42711não verificadogithubgithub.com/bhdresh/CVE-2017-8759312githubgithub.com/Voulnet/CVE-2017-8759-Exploit-sample255githubgithub.com/vysecurity/CVE-2017-8759176githubgithub.com/nccgroup/CVE-2017-875994githubgithub.com/JonasUliana/CVE-2017-87595githubgithub.com/ashr/CVE-2017-8759-exploits2githubgithub.com/BasuCert/CVE-2017-87591githubgithub.com/tahisaad6/CVE-2017-8759-Exploit-sample20githubgithub.com/homjxi0e/CVE-2017-8759_-SOAP_WSDL0githubgithub.com/smashinu/CVE-2017-8759Expoit0githubgithub.com/sythass/CVE-2017-87590githubgithub.com/ChaitanyaHaritash/CVE-2017-87590githubgithub.com/adeljck/CVE-2017-87590githubgithub.com/zhengkook/CVE-2017-87590githubgithub.com/varunsaru/SNP0githubgithub.com/GayashanM/OHTS0githubgithub.com/l0n3rs/CVE-2017-87590vulncheckvulncheck.com/xdb/229e0e29b71bnão verificadovulncheckvulncheck.com/xdb/074916446e1cnão verificadovulncheckvulncheck.com/xdb/4b60da5761a0não verificadocve_referencewww.exploit-db.com/exploits/42711/não verificadovulncheckvulncheck.com/xdb/e28825904312não verificadovulncheckvulncheck.com/xdb/4107da43504anão verificadovulncheckvulncheck.com/xdb/2c3cc4e5f0efnão verificadovulncheckvulncheck.com/xdb/9b87d37fcb73não verificadovulncheckvulncheck.com/xdb/0187c7bde1e5não verificadovulncheckvulncheck.com/xdb/8334ffed12fanão verificadovulncheckvulncheck.com/xdb/ed1021bf7878não verificadovulncheckvulncheck.com/xdb/95e9d2508a2bnão verificadovulncheckvulncheck.com/xdb/78581acb6157não verificadovulncheckvulncheck.com/xdb/c10cc081a401não verificadovulncheckvulncheck.com/xdb/b9285bd07a5anão verificado
⚠ Recursos públicos, para você avaliar a exposição de sistemas que controla ou está autorizado a testar. Teste apenas com autorização.