← voltar
CVE-2020-0601highsob ataqueCWE-295

CVE-2020-0601

100Vexday Risk Score

Priorize a correção. Ela está sob exploração confirmada pelo CISA e tem prova de conceito pública.

ssvc Actcvss 8.1epss 89%
da publicação à arma0 dias
Publicada no NVD14 de jan.
1ª PoC14 de jan.
CISA KEV+659d
probabilidade de exploração
89%top 1% das CVEs
exploração observada
simCISA + VulnCheck
50 exploit(s) público(s)
Ação exigida pela CISAprazo federal: 2022-05-03

Apply updates per vendor instructions.

Resumo

Falha na validação de certificados ECC (Elliptic Curve Cryptography) pelo CryptoAPI do Windows (Crypt32.dll), que permite forjar um certificado que o sistema aceita como assinado por uma Autoridade Certificadora raiz confiável. Na prática, um atacante pode assinar executáveis maliciosos fazendo-os parecer legitimamente assinados, ou interceptar conexões HTTPS validadas via CryptoAPI. Foi reportada pela NSA à Microsoft — primeira vez que a agência foi publicamente creditada por um report de vulnerabilidade — e ganhou o apelido 'CurveBall'.

Detalhamento técnico

A causa é CWE-295 (Improper Certificate Validation). O CryptoAPI, ao validar um certificado ECC, verifica se a chave pública do certificado 'bate' com a chave pública de uma CA raiz confiável instalada no sistema. O problema é que essa comparação considera apenas o ponto público final, e o Windows permite que certificados ECC especifiquem parâmetros de curva explícitos (curva customizada, ponto gerador G próprio) em vez de usar apenas curvas nomeadas padrão (P-256, P-384 etc). Um atacante pode escolher parâmetros de curva forjados sob os quais ele conhece a chave privada correspondente a um ponto que, matematicamente, colide com a chave pública pública da CA raiz legítima nessa curva alternativa.

O resultado é que o Windows reconstrói a cadeia de confiança e conclui, erroneamente, que o certificado forjado descende da CA raiz confiável — porque a verificação de igualdade de chave pública não amarra os parâmetros de domínio da curva aos parâmetros esperados daquela CA específica. O atacante controla integralmente os parâmetros da curva do certificado forjado e a chave privada correspondente, o que é suficiente para gerar um certificado intermediário ou de assinatura de código que o sistema trata como válido.

O impacto declarado pela Microsoft é spoofing (integridade — assinatura falsa aceita como legítima), mas a CISA no KEV amplia a descrição: exploração bem-sucedida também permite ataques man-in-the-middle e decriptação de tráfego confidencial em conexões que dependem da validação de certificado do CryptoAPI (por exemplo, aplicações e componentes do sistema que usam Crypt32.dll para TLS, não necessariamente navegadores com sua própria stack criptográfica).

Como é explorada

O vetor mais divulgado é assinatura de código: o atacante gera um certificado ECC malicioso com os parâmetros de curva forjados, usa-o para assinar um executável ou um driver, e o Windows exibe esse binário como assinado por uma cadeia confiável — sem alertas de assinatura inválida. Não há necessidade de acesso prévio à máquina da vítima para forjar o certificado; a exploração ocorre no momento em que a vítima executa ou abre o arquivo assinado, ou quando estabelece uma conexão validada pelo CryptoAPI vulnerável. A interação do usuário (executar o arquivo, aceitar a conexão) é o principal pré-requisito, refletido no UI:R do vetor CVSS.

O segundo vetor, TLS/HTTPS MITM, exige que o atacante esteja posicionado na rede entre a vítima e o servidor legítimo (ataque de rede clássico) e que a aplicação afetada dependa do CryptoAPI para validar o certificado do servidor — isso não se aplica automaticamente a navegadores que usam suas próprias bibliotecas de validação (Chrome e Firefox, por exemplo, não usam Crypt32.dll da mesma forma para a cadeia de confiança).

Uma PoC pública ('CurveBall') foi publicada rapidamente após a divulgação do patch, comprovando a viabilidade prática de gerar certificados colidentes em poucos segundos com hardware comum. A vulnerabilidade está no catálogo KEV da CISA como exploração confirmada in-the-wild, e a facilidade de reprodução da PoC — combinada ao fato de a falha atingir a confiança em assinaturas de código, pilar de defesas antimalware — tornou o CVE um dos mais críticos do Patch Tuesday de janeiro de 2020.

Versões

Afetadas
Microsoft Windows 10 Version 1903 (32-bit, ARM64-based, x64-based Systems); Microsoft Windows 10 Version 1909 (32-bit, ARM64-based, x64-based Systems); Microsoft Windows Server (versões afetadas conforme advisory da Microsoft). A lista completa e exata de builds/SKUs consta no MSRC advisory oficial.
Corrigidas em
Atualizações de segurança lançadas pela Microsoft no Patch Tuesday de janeiro de 2020, correspondentes a cada versão/arquitetura listada no advisory oficial (MSRC). Os números de KB específicos por build devem ser confirmados diretamente no advisory da Microsoft, não reproduzidos aqui para evitar erro.

Como se proteger

A correção definitiva é aplicar a atualização de segurança da Microsoft lançada no Patch Tuesday de janeiro de 2020, que corrige a validação de parâmetros de curva ECC no CryptoAPI para os produtos listados (Windows 10 1903/1909 em todas as arquiteturas e Windows Server nas versões afetadas). Não há uma flag de configuração ou desativação de componente que mitigue a falha sem o patch — a validação defeituosa está no núcleo do CryptoAPI usado por todo o sistema para assinatura de código e TLS, então remover ou desabilitar Crypt32.dll não é viável.

A CISA, via Diretiva Emergencial ED 20-02, exigiu que agências federais dos EUA aplicassem o patch dentro de prazo curto (10 dias) dada a gravidade — sinal de que não existe controle compensatório equivalente à correção do fornecedor. Onde o patch imediato não for possível, o controle prático é reduzir a superfície: restringir execução de binários não assinados por fontes já conhecidas via políticas de allowlisting (AppLocker/WDAC) independentes da validação de assinatura do CryptoAPI, e monitorar tráfego de rede quanto a certificados anômalos — mas isso reduz risco, não elimina a vulnerabilidade subjacente.

O KEV da CISA registra a data de inclusion em 2021-11-03 com prazo (due date) de 2022-05-03 para remediação, o que reflete o ciclo de gestão de vulnerabilidades federal, não uma nova janela de exploração — a exploração ativa e a PoC já circulavam desde janeiro de 2020, logo após a divulgação original.

Como detectar

O principal sinal é a presença de certificados ECC com parâmetros de curva explícitos (custom domain parameters) em vez de referência a curvas nomeadas padrão, especialmente em certificados de assinatura de código ou em cadeias TLS — CAs legítimas praticamente não emitem certificados com parâmetros de curva explícitos para uso comum, então sua presença é fortemente anômala. A NSA e outros publicaram, na época, scripts/ferramentas de triagem para varrer binários e certificados quanto a esse padrão.

Não há um IOC de rede único e confiável (como uma string ou payload fixo), já que a exploração consiste em criptografia matemática legítima com parâmetros forjados — logs de antivírus/EDR que sinalizem 'assinatura válida mas emissor suspeito' ou falhas de correlação entre a CA raiz esperada e os parâmetros de curva do certificado folha são o melhor indício disponível, mas exigem inspeção específica da cadeia de certificados, não detecção automática padrão dos sistemas de log convencionais.

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.
A spoofing vulnerability exists in the way Windows CryptoAPI (Crypt32.dll) validates Elliptic Curve Cryptography (ECC) certificates.An attacker could exploit the vulnerability by using a spoofed code-signing certificate to sign a malicious executable, making it appear the file was from a trusted, legitimate source, aka 'Windows CryptoAPI Spoofing Vulnerability'.
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N
PoCs públicas encontradas50
exploitdbwww.exploit-db.com/exploits/47933não verificadogithubgithub.com/ly4k/CurveBall888githubgithub.com/kudelskisecurity/chainoffools335githubgithub.com/gentilkiwi/curveball78githubgithub.com/saleemrashid/badecparams66githubgithub.com/0xxon/cve-2020-060135githubgithub.com/eastmountyxz/CVE-2020-0601-EXP30githubgithub.com/ioncodes/Curveball20githubgithub.com/RrUZi/Awesome-CVE-2020-06015githubgithub.com/0xxon/cve-2020-0601-plugin5githubgithub.com/IIICTECH/-CVE-2020-0601-ECC---EXPLOIT3githubgithub.com/gremwell/cve-2020-0601_poc2githubgithub.com/nissan-sudo/CVE-2020-06012githubgithub.com/YoannDqr/CVE-2020-06012githubgithub.com/BlueTeamSteve/CVE-2020-06011githubgithub.com/eastmountyxz/CVE-2018-20250-WinRAR1githubgithub.com/SherlockSec/CVE-2020-06011githubgithub.com/Hans-MartinHannibalLauridsen/CurveBall1githubgithub.com/talbeerysec/CurveBallDetection1githubgithub.com/yanghaoi/CVE-2020-06011githubgithub.com/amlweems/gringotts1githubgithub.com/Doug-Moody/Windows10_Cumulative_Updates_PowerShell1githubgithub.com/CrackerCat/CurveballCertTool0githubgithub.com/JPurrier/CVE-2020-06010githubgithub.com/0xxon/cve-2020-0601-utils0githubgithub.com/MarkusZehnle/CVE-2020-06010githubgithub.com/thimelp/cve-2020-0601-Perl0githubgithub.com/okanulkr/CurveBall-CVE-2020-0601-PoC0githubgithub.com/tyj956413282/curveball-plus0githubgithub.com/JoelBts/CVE-2020-0601_PoC0githubgithub.com/exploitblizzard/CVE-2020-0601-spoofkey0githubgithub.com/ShayNehmad/twoplustwo0githubgithub.com/dlee35/curveball_lua0githubgithub.com/Ash112121/CVE-2020-06010githubgithub.com/apodlosky/PoC_CurveBall0githubgithub.com/bsides-rijeka/meetup-2-curveball0vulncheckvulncheck.com/xdb/839b9e7e2e93não verificadovulncheckvulncheck.com/xdb/6bc84901f00anão verificadovulncheckvulncheck.com/xdb/740afa3911a0não verificadovulncheckvulncheck.com/xdb/0766cc1abe5dnão verificadovulncheckvulncheck.com/xdb/cc5ed1f3625fnão verificadocve_referencepacketstormsecurity.com/files/155960/CurveBall-Microsoft-Windows-CryptoAPI-Spoofing-Proof-Of-Concept.htmlnão verificadovulncheckvulncheck.com/xdb/6abcb18100dcnão verificadovulncheckvulncheck.com/xdb/08bffaffbac2não verificadocve_referencepacketstormsecurity.com/files/155961/CurveBall-Microsoft-Windows-CryptoAPI-Spoofing-Proof-Of-Concept.htmlnão verificadovulncheckvulncheck.com/xdb/1ab56e688532não verificadovulncheckvulncheck.com/xdb/2269fe47fe2fnão verificadovulncheckvulncheck.com/xdb/f3005b474479não verificadovulncheckvulncheck.com/xdb/496d3fc0b8d0não verificadovulncheckvulncheck.com/xdb/09c5af32c1d7nã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.