Esta manhã, fomos alertados sobre um ataque em larga escala contra o npm. Este parece ser o trabalho dos mesmos agentes de ameaça por trás do ataque Nx em 27 de agosto de 2025. Isso foi originalmente publicado por Socket e StepSecurity, que notaram que 40 pacotes haviam sido comprometidos; desde então, 147 pacotes adicionais foram infectados com malware, incluindo pacotes da CrowdStrike.
A escala, o escopo e o impacto deste ataque são significativos. Os atacantes estão usando em grande parte o mesmo playbook do ataque original, mas intensificaram suas ações. Eles o transformaram em um worm completo, que faz estas coisas automaticamente:
- Roubar Secrets e publicá-los no GitHub publicamente
- Executar trufflehog e consultar endpoints de metadados da Cloud para coletar Secrets
- Tentar criar uma nova ação do GitHub com um mecanismo de exfiltração de dados através de webhook[.]site
- Iterar os repositórios no GitHub aos quais um usuário tem acesso e torná-los públicos
Desde o nosso alerta inicial esta manhã, confirmamos os seguintes comportamentos adicionais e detalhes importantes. Para quem não sabe, Shai Hulud é o nome do verme na franquia Duna. Uma clara indicação da intenção dos atacantes.

Para evitar ser comprometido por pacotes como este, confira o Aikido safe-chain!
O que o worm faz
- Coleta: escaneia o host e o ambiente de CI em busca de Secrets — process.env, escaneando com TruffleHog, e endpoints de metadados da Cloud (AWS/GCP) que retornam credenciais de instância/serviço.
- Exfiltrar (1) — repositório GitHub: cria um repositório chamado Shai-Hulud sob a conta comprometida e faz commit de um dump JSON contendo informações do sistema, variáveis de ambiente e Secrets coletados.
- Exfiltrar (2) — GitHub Actions → webhook: descarta um workflow
.github/workflows/shai-hulud-workflow.ymlque serializa${{ toJSON(secrets) }}, os envia via POST para um atacantewebhook[.]siteURL e escreve uma cópia em double-base64 nos logs das Actions. - Propagar: usa quaisquer tokens npm válidos que encontra para enumerar e tentar atualizar pacotes que o mantenedor comprometido controla (propagação na cadeia de suprimentos).
- Amplificar: itera sobre os repositórios acessíveis da vítima, tornando-os públicos ou adicionando o workflow/branch que irá acionar execuções e vazamentos adicionais.
Vazamento de Secrets
Assim como no ataque Nx original, estamos vendo os atacantes realizando um ataque no estilo 'smash-and-grab'. O payload malicioso tanto publica um repositório "Shai-Hulud" com credenciais/tokens roubados, quanto irá percorrer uma conta GitHub e transformar repositórios privados em públicos:


Autopropagação via npm
Uma das características mais marcantes deste ataque é que ele se comporta como um verdadeiro worm. Em vez de depender de um único pacote infectado para se espalhar, o código é projetado para republicar-se em outros pacotes npm de propriedade do mantenedor comprometido.
Veja como a lógica do worm funciona:
- Baixa um tarball alvo – ele busca uma versão de pacote existente do registro npm.
- Modificar
package.json– o worm aumenta a versão de patch (por exemplo,1.2.3 → 1.2.4) e insere um novo hook de ciclo de vida (postinstall) - Copia seu próprio payload – o script em execução (
process.argv[1]) é escrito no tarball comobundle.js. Isso garante que qualquer código que infectou um pacote agora resida no próximo. - Republicar o pacote trojanizado – o tarball modificado é compactado com gzip e enviado de volta ao npm usando as credenciais do mantenedor.
Este ciclo permite que o malware infecte continuamente todos os pacotes aos quais um mantenedor tem acesso. Cada pacote publicado torna-se um novo vetor de distribuição: assim que alguém o instala, o worm é executado, replica-se e se espalha ainda mais no ecossistema.
Em resumo: o invasor não precisa direcionar pacotes manualmente. Uma vez que um único ambiente é comprometido, o worm automatiza a propagação aproveitando os próprios direitos de publicação do mantenedor.
Para uma análise completa do malware, recomendamos revisar o post do getsafety
Pacotes impactados
História em desenvolvimento…
Recomendações de Remediação
- Verifique as versões que você está utilizando
- Limpe seu cache do npm
- Reinstale todos os pacotes em seu repositório
- Certifique-se de usar um arquivo de bloqueio de pacote e utilize versões fixadas.
Como saber se você foi afetado usando o Aikido:
Se você é um usuário Aikido, verifique seu feed central e filtre por problemas de malware. A vulnerabilidade será apresentada como um problema crítico 100/100 no feed. Dica: O Aikido reanalisa seus repositórios todas as noites, embora recomendemos acionar uma reanálise completa também.
Se você ainda não é um usuário Aikido, crie uma conta e conecte seus repositórios. Nossa cobertura proprietária de malware está incluída no plano gratuito (não é necessário cartão de crédito).
Para proteção futura, considere usar o Aikido SafeChain (código aberto), um wrapper seguro para npm, npx, yarn... O Safechain se integra aos seus fluxos de trabalho atuais, funcionando ao interceptar comandos npm, npx, yarn, pnpm e pnpx e verificando os pacotes em busca de malware antes da instalação contra Aikido Intel - Open Sources Threat Intelligence. Pare as ameaças antes que atinjam sua máquina.

