Alerta NPM : Pacotes com bilhões de downloads comprometidos


Na primeira semana de setembro de 2025, a comunidade JavaScript foi surpreendida com o que especialistas já estão chamando de o maior ataque à cadeia de suprimentos da história do ecossistema NPM. Pacotes extremamente populares — incluindo nomes como chalk, debug, color-convert, strip-ansi e supports-color — foram sequestrados por hackers, afetando diretamente bilhões de instalações semanais em projetos no mundo todo.

O Que Aconteceu?

Hackers realizaram um ataque de phishing direcionado a mantenedores de pacotes NPM. Eles enviaram e-mails falsos alegando serem da equipe oficial do NPM, solicitando uma “atualização obrigatória de 2FA”. A mensagem induzia os desenvolvedores a clicarem em um link malicioso hospedado no domínio falso npmjs.help, que imitava o portal legítimo npmjs.com.

Uma vez obtidas as credenciais, os invasores ganharam acesso total à conta do mantenedor e injetaram código malicioso em versões novas dos pacotes.


🦠 Como o Malware Funciona (Passo a Passo)

O código malicioso inserido nos pacotes compromete a segurança de aplicações web que utilizam carteiras de criptomoedas. A seguir, um resumo técnico do seu funcionamento:

1. Injeção no navegador

  • O malware se infiltra diretamente no ambiente do navegador.
  • Realiza hooks em funções centrais como fetch, XMLHttpRequest e APIs de carteiras (window.ethereum, Solana, etc.).
  • Com isso, é capaz de interceptar tanto o tráfego web quanto a atividade de carteiras.

2. Monitoramento de dados sensíveis

  • Escaneia respostas de rede e payloads de transações.
  • Busca por padrões que correspondam a endereços de carteiras ou transferências de valor.
  • Reconhece diversos formatos, incluindo Ethereum, Bitcoin, Solana, Tron, Litecoin e Bitcoin Cash.

3. Reescrita de destinos

  • Substitui o endereço legítimo por um endereço controlado pelo atacante.
  • Usa endereços com aparência semelhante (“lookalike”) para evitar levantar suspeitas.

4. Sequestro de transações antes da assinatura

  • Altera parâmetros críticos de transações Ethereum e Solana (como destinatários, autorizações e permissões).
  • Mesmo que a interface de usuário pareça correta, a transação assinada redireciona os fundos ao invasor.

5. Modo furtivo

  • Caso detecte uma carteira ativa, evita alterações visíveis na interface para não levantar alertas.
  • Mantém hooks silenciosos em segundo plano, prontos para capturar e modificar transações reais conforme necessário.

🔗 A investigação completa está sendo atualizada dinamicamente pela equipe da Aikido:
https://www.aikido.dev/blog/npm-debug-and-chalk-packages-compromised

Lista de Pacotes Afetados

PacoteDownloads/semana
chalk299 milhões
debug357 milhões
ansi-styles371 milhões
supports-color287 milhões
strip-ansi261 milhões
color-convert193 milhões
wrap-ansi197 milhões
ansi-regex243 milhões
color-name191 milhões
is-arrayish73 milhões

Lições e Recomendações

  1. Desconfie de e-mails solicitando ações urgentes, mesmo que pareçam legítimos.
  2. Ative o 2FA com aplicativos confiáveis, como Authy ou Google Authenticator.
  3. Audite os pacotes utilizados, especialmente os que foram atualizados recentemente.
  4. Fixe dependências com lockfiles (package-lock.json, yarn.lock) e verificação de integridade.
  5. Implemente repositórios internos (mirrors) para dependências críticas.
  6. Use ferramentas de segurança contínua, como Snyk, Socket.dev, Aikido ou npm audit.

Conclusão

Esse ataque levanta um alerta vermelho sobre a fragilidade operacional, mesmo nos projetos mais populares. Uma única conta comprometida pode escalar rapidamente para bilhões de sistemas afetados — silenciosamente e de forma altamente sofisticada.

A segurança de sua aplicação não está apenas no seu código — mas também em tudo o que você importa via npm install.

Deixe um comentário

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.