← voltar
CVE-2025-15556highsob ataqueCWE-494

Notepad++ < 8.8.9 WinGUp Updater Lacks Update Integrity Verification

71Vexday Risk Score

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

ssvc Actcvss 7.7epss 1.3%
da publicação à arma6 dias
Publicada no NVD3 de fev.
1ª PoC+6d
CISA KEV+9d
probabilidade de exploração
1.3%top 33% das CVEs
exploração observada
simCISA + VulnCheck
2 exploit(s) público(s)
Ação exigida pela CISAprazo federal: 2026-03-05

Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.

Resumo

O updater WinGUp do Notepad++, em versões anteriores à 8.8.9, baixava metadados de atualização e o instalador sem qualquer verificação criptográfica de assinatura ou certificado antes de executá-lo. Isso não é uma falha explorável por um atacante de rede qualquer: exige controle sobre o canal de distribuição (DNS, CDN, infraestrutura de hospedagem) — exatamente o que aconteceu no incidente real, quando o provedor de hospedagem do projeto foi comprometido por um grupo atribuído a ataque patrocinado por estado, que filtrou vítimas de alto valor em vez de atacar usuários ao acaso. A CISA confirmou exploração ativa (KEV) e existe PoC pública.

Detalhamento técnico

A falha é uma ausência de verificação de integridade/autenticidade de código baixado (CWE-345 / CWE-494). Nas versões vulneráveis, o Notepad++ invocava o processo do WinGUp (GUP.exe) passando apenas os parâmetros '-i' (infoUrl) e '-d' (forceDomain) — nenhum deles verificava assinatura digital, certificado ou hash do arquivo baixado. O updater confiava ciegamente no conteúdo servido pelo domínio de download, seja o descritor XML de atualização, seja o instalador final.

A correção (commits bcf2aa6 no repositório principal e ce00375 no WinGup) introduz checagem de assinatura Authenticode via a classe SecurityGuard, com o método renomeado de verifySignedLibrary para verifySignedBinary. O updater agora passa parâmetros adicionais ao processo GUP: -chkCertSig=yes, -chkCertRevoc, -chkCertTrustChain, -chkCertName, -chkCertSubject e -chkCertAuthorityKeyId. Esses valores incluem um distinguished name esperado (CN/O='Notepad++', C=FR) e IDs de chave de certificado hardcoded no binário (signer key ID e, novo, authority key ID), usados para validar a cadeia de confiança e revogação do certificado do instalador antes de executá-lo.

O atacante não controla nenhuma variável do código do Notepad++ em si — ele controla o que é entregue pelo canal de rede/distribuição no momento da atualização. Como não havia pinning de certificado nem verificação de hash do artefato final, qualquer binário entregue nesse canal era executado como se fosse legítimo, com plenos privilégios do processo que disparou a atualização.

Como é explorada

O vetor exige posição de interceptação ou redirecionamento do tráfego de atualização: hijack de DNS, manipulação de rota, MITM on-path, ou — como ocorreu no incidente real documentado pelo próprio projeto — comprometimento da infraestrutura de hospedagem que servia os artefatos de atualização do WinGUp. Não é uma exploração client-side direta contra o parser ou contra a aplicação; é abuso da cadeia de confiança de distribuição de software. Isso explica o AC:H no vetor CVSS 4.0: a complexidade não está em craftar um payload complexo, mas em obter esse ponto de controle na rede/infraestrutura.

Uma vez nessa posição, o atacante substitui o metadado de atualização e/ou o instalador por uma versão maliciosa. Como o WinGUp pré-8.8.9 não valida assinatura, certificado nem hash do artefato, ele baixa e executa o arquivo malicioso com os privilégios do usuário que disparou (ou aceitou) a atualização — na prática, geralmente o usuário logado, que em ambientes corporativos frequentemente tem privilégios elevados na própria estação. O UI:P no vetor reflete que a atualização passa por um prompt/ação do usuário, mas trata-se de fricção mínima, já que o fluxo de auto-update é comportamento esperado e confiado pelo usuário.

Há exploração ativa confirmada: o projeto publicou dois comunicados ('Notepad++ Hijacked by State-Sponsored Hackers' e a clarificação subsequente) relatando que o WinGup foi comprometido via infraestrutura do antigo provedor de hospedagem, num ataque seletivo e não massivo, com IoCs disponibilizados pelo provedor, pela Rapid7 e pela Kaspersky. A CVE está no catálogo KEV da CISA e há PoC pública.

Versões

Afetadas
Notepad++ com WinGUp anterior à versão 8.8.9 (todas as versões que utilizam o auto-updater sem a verificação de certificado/assinatura introduzida na correção).
Corrigidas em
8.8.9 corrige a falha implementando verificação de certificado e assinatura no instalador de atualização baixado. O projeto recomenda a versão 8.9.1 como release atual pós-incidente de segurança.

Como se proteger

Atualizar para 8.8.9 ou posterior — o projeto recomenda diretamente a 8.9.1 como versão corrente pós-incidente. Atenção: houve um MSI 8.8.9 com número de versão de produto incorreto (ainda reportado como 8.8.8 pelo instalador), o que impedia upgrade automático via ferramentas como Intune; o projeto reemitiu o MSI corrigido com nova assinatura GPG e novo hash SHA-256 publicados na página de download — vale confirmar que o pacote instalado corresponde ao hash/assinatura atuais, não apenas ao número de versão exibido.

Se a atualização imediata não for viável, o paliativo real é desabilitar o auto-updater: no MSI, usar a opção NOUPDATER=1 (msiexec /i npp..Installer.x64.msi NOUPDATER=1), ou desmarcar a opção de auto-atualização durante a instalação/nas configurações. O custo é óbvio: a instância para de receber atualizações automáticas e passa a depender de processo manual de atualização, com verificação manual de hash SHA-256 e assinatura GPG do instalador contra os valores publicados oficialmente.

Não funciona como mitigação: assumir que HTTPS no transporte é suficiente. Se a origem/infraestrutura que serve o artefato está comprometida — como ocorreu no incidente real — o TLS entre cliente e servidor não impede a entrega de um arquivo malicioso servido legitimamente por aquele endpoint; só a verificação de assinatura/certificado do próprio artefato no lado do cliente (o que a correção implementa) mitiga esse cenário.

Como detectar

Verificar a versão instalada do Notepad++ (< 8.8.9 é vulnerável) e se o auto-update foi executado durante a janela do incidente relatado pelo projeto. Em ambientes corporativos, cruzar com os Indicadores de Comprometimento (IoCs) publicados pelo antigo provedor de hospedagem do projeto, pela Rapid7 e pela Kaspersky, referenciados nos comunicados oficiais — não há, nas fontes apuradas, uma assinatura de rede ou de log única e confiável para detectar a exploração isoladamente, já que ela dependeu de comprometimento de infraestrutura de distribuição, não de um payload ou requisição padronizada. Como sinal complementar, comparar o hash SHA-256 e a assinatura GPG de qualquer instalador do Notepad++ baixado no período contra os valores oficiais publicados na página de download do projeto.

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.
Notepad++ versions prior to 8.8.9, when using the WinGUp updater, contain an update integrity verification vulnerability where downloaded update metadata and installers are not cryptographically verified. An attacker able to intercept or redirect update traffic can cause the updater to download and execute an attacker-controlled installer, resulting in arbitrary code execution with the privileges of the user.
CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
⚠ Recursos públicos, para você avaliar a exposição de sistemas que controla ou está autorizado a testar. Teste apenas com autorização.