NoticiasTecnologia

ChainDrop npm infecta pacotes em ataque massivo

O malware ChainDrop npm comprometeu mais de 1.300 pacotes no registro Node Package Manager, somando cerca de 2 bilhões de downloads mensais. Segundo a BleepingComputer, o ataque à cadeia de suprimentos foi divulgado em 4 de agosto de 2026 e atingiu bibliotecas populares usadas por desenvolvedores, incluindo Keyv, Cacheable, flat-cache e file-entry-cache. O incidente começou após o comprometimento da conta GitHub de um mantenedor e se espalhou por fluxos legítimos de publicação, dificultando a detecção inicial.

Como o ChainDrop npm se espalhou

O ChainDrop npm é descrito por empresas de segurança como um worm baseado no Shai-Hulud, com capacidade de autopropagação. A operação começou quando o invasor obteve acesso à conta GitHub ligada ao mantenedor do Keyv. A partir daí, arquivos maliciosos foram enviados diretamente aos branches principais dos projetos e novas versões foram publicadas no npm.

Esse detalhe é importante: como os pacotes foram compilados e publicados por workflows legítimos do GitHub Actions, as versões contaminadas carregavam informações válidas de provenance. Em outras palavras, pareciam lançamentos confiáveis para ferramentas que verificam a origem do pacote, embora contivessem código malicioso.

Qualquer ambiente que executou npm install em uma versão afetada deve ser tratado como comprometido, mesmo que o pacote tenha sido removido depois.

Pacotes afetados e organizações citadas

Entre os pacotes npm comprometidos estão utilitários de cache amplamente usados, como Keyv e Cacheable, além de flat-cache e file-entry-cache. A campanha também alcançou pacotes associados a organizações como Deliveroo, Ornikar, OneReach, Picsart, Qlik e ServiceTitan, ampliando o risco para projetos corporativos e pipelines de CI/CD.

A Aikido informou ter identificado “ao menos 868 pacotes, em 1.381 versões, comprometidos pelo worm”. Já a BleepingComputer relata que o número total ultrapassa 1.300 pacotes, com 2 bilhões de downloads mensais combinados. Como a investigação ainda está em andamento, listas de versões maliciosas podem crescer nos próximos dias.

Arquivos maliciosos e execução automática

Os pacotes envenenados incluíam dois componentes principais: o dropper setup.mjs e o script Math_Symbol.js, usado para roubo de informações. Também foi adicionada ao package.json a entrada "preinstall": "node setup.mjs", fazendo o código rodar automaticamente antes do término da instalação.

“Qualquer pessoa que executou npm install contra uma versão afetada teria o setup.mjs executado automaticamente antes da conclusão da instalação.”

Pesquisadores da Aikido

O setup.mjs baixa o runtime JavaScript Bun a partir de releases oficiais no GitHub para executar o payload Math_Symbol.js. Depois, remove o diretório temporário usado durante a execução. A BleepingComputer também observou pacotes contendo o script math_init.js, com função semelhante.

Script ofuscado math_init.js e Math_Symbol.js usado pelo ChainDrop npm
Scripts ofuscados math_init.js e Math_Symbol.js foram associados ao roubo de credenciais em ambientes de desenvolvimento.

Quais credenciais o malware tenta roubar

O ChainDrop npm procura credenciais em estações de desenvolvedores, runners de CI/CD e ambientes de nuvem. Antes de roubar tokens npm, o malware valida cada token em tempo real contra registry.npmjs.org/-/whoami. A coleta inclui variáveis de ambiente, arquivos locais de configuração, chaves privadas e segredos de serviços populares.

  • Tokens GitHub PAT, workflow tokens e chaves ghp_, gho_ e ghs_.
  • Tokens npm iniciados por npm_ e segredos do GitHub Actions.
  • Credenciais AWS, SSM Parameter Store com WithDecryption: true e Secrets Manager.
  • Secrets Kubernetes, tokens HashiCorp Vault e dados KV acessíveis.
  • Credenciais de bancos de dados, Stripe, Slack, Twilio, Azure e GCP.

Indicadores de comprometimento e domínio suspeito

Segundo a Wiz, o domínio npm-cache[.]com está sendo usado para exfiltração de dados e deve ser tratado como forte indicador de comprometimento. As empresas  Wiz , StepSecurity , Aikido , Socket e Ox Security  publicaram listas de pacotes afetados, hashes de arquivos, artefatos maliciosos e dados de rede para investigação.

ElementoRiscoAção recomendada
setup.mjsExecução no preinstallAuditar versões instaladas
Math_Symbol.jsInfostealer ofuscadoVerificar hashes e artefatos
npm-cache[.]comExfiltração de dadosBloquear e revisar logs

O que administradores devem fazer agora

Se uma versão afetada foi instalada, a orientação é presumir comprometimento do workstation ou runner de CI/CD. Remover o pacote não basta, porque o ChainDrop npm pode ter coletado tokens reutilizáveis e segredos capazes de abrir acesso a repositórios, pacotes e ambientes de nuvem.

  1. Reconstrua sistemas a partir de backups seguros ou imagens limpas.
  2. Rotacione todos os tokens, chaves e credenciais acessíveis no ambiente.
  3. Revise logs de npm, GitHub, cloud, Kubernetes e Vault.
  4. Procure commits inesperados, releases não autorizadas e alterações em workflows.
  5. Adote allowlisting de dependências, checagem de integridade e controles de provenance.

Por que o caso preocupa a comunidade JavaScript

O incidente mostra como um ataque à cadeia de suprimentos pode transformar pacotes confiáveis em vetor de infecção. No ecossistema npm, uma dependência transitiva popular pode chegar a milhares de projetos rapidamente. Quando o malware usa automação, workflows válidos e autopropagação, a resposta precisa combinar engenharia, segurança de identidade e monitoramento contínuo.

Perguntas frequentes sobre ChainDrop npm

  1. O que é o ChainDrop npm?

    É um worm infostealer em pacotes npm. Ele usa scripts preinstall para roubar credenciais e se espalhar por projetos e mantenedores.

  2. Quais pacotes npm foram citados no ataque?

    Keyv, Cacheable, flat-cache e file-entry-cache estão entre os citados. Listas atualizadas foram publicadas por Aikido, Wiz, Socket, StepSecurity e Ox Security.

  3. Remover o pacote comprometido resolve o problema?

    Não necessariamente. Se o preinstall foi executado, tokens e segredos podem ter sido roubados. O ambiente deve ser reconstruído e as credenciais rotacionadas.

  4. Qual é o principal indicador de comprometimento?

    A Wiz aponta npm-cache[.]com como forte IOC. Também devem ser verificados scripts setup.mjs, Math_Symbol.js, math_init.js e hashes divulgados pelas empresas de segurança.

Considerações finais

O caso ChainDrop npm reforça que segurança de dependências não se limita a verificar nomes conhecidos. Equipes devem combinar controle de versões, revisão de releases, rotação de segredos, monitoramento de CI/CD e validação contínua de pacotes. Como a campanha ainda evolui, acompanhar os IOCs e as listas de pacotes comprometidos é essencial para reduzir danos.

Diogo Fernando

Apaixonado por tecnologia e cultura pop, programo para resolver problemas e transformar vidas. Empreendedor e geek, busco novas ideias e desafios. Acredito na tecnologia como superpoder do século XXI.