← back
CVE-2020-0601highunder attackCWE-295

CVE-2020-0601

100Vexday Risk Score

Prioritize patching. It under exploitation confirmed by CISA and has a public proof of concept.

ssvc Actcvss 8.1epss 89%
from disclosure to weapon0 days
Published on NVDJan 14
1st PoCJan 14
CISA KEV+659d
exploitation probability
89%top 1% of all CVEs
observed exploitation
yesCISA + VulnCheck
50 public exploit(s)
Action required by CISAfederal deadline: 2022-05-03

Apply updates per vendor instructions.

Summary

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

Technical detail

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

How it’s exploited

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.

Versions

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

How to protect

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.

How to detect

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.

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.
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
public PoCs found50
exploitdbwww.exploit-db.com/exploits/47933unverifiedgithubgithub.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/839b9e7e2e93unverifiedvulncheckvulncheck.com/xdb/6bc84901f00aunverifiedvulncheckvulncheck.com/xdb/740afa3911a0unverifiedvulncheckvulncheck.com/xdb/0766cc1abe5dunverifiedvulncheckvulncheck.com/xdb/cc5ed1f3625funverifiedcve_referencepacketstormsecurity.com/files/155960/CurveBall-Microsoft-Windows-CryptoAPI-Spoofing-Proof-Of-Concept.htmlunverifiedvulncheckvulncheck.com/xdb/6abcb18100dcunverifiedvulncheckvulncheck.com/xdb/08bffaffbac2unverifiedcve_referencepacketstormsecurity.com/files/155961/CurveBall-Microsoft-Windows-CryptoAPI-Spoofing-Proof-Of-Concept.htmlunverifiedvulncheckvulncheck.com/xdb/1ab56e688532unverifiedvulncheckvulncheck.com/xdb/2269fe47fe2funverifiedvulncheckvulncheck.com/xdb/f3005b474479unverifiedvulncheckvulncheck.com/xdb/496d3fc0b8d0unverifiedvulncheckvulncheck.com/xdb/09c5af32c1d7unverified
⚠ Public resources, to assess the exposure of systems you control or are authorized to test. Test only with authorization.