Pesquisadores do tempo de Vulnerability Research do GitLab identificaram um grande ataque de cadeia de suprimentos no ecossistema npm, impulsionado por uma variante evoluída do malware “Shai-Hulud”, com um mecanismo perigoso de “dead man’s switch” voltado para a destruição de dados do usuário.
Como o malware se espalha
Ó ataque começa quando desenvolvedores instalam pacotes npm comprometidos; scripts de pré-instalação baixaram um binário de ~10 MB que se passa pelo runtime Bun, mas na verdade é o payload malicioso, executado em segundo plano para não levantar suspeitas.
Uma vez em execução, o malware colhe credenciais agressivas: tokens do GitHub (GITHUB_TOKEN), chaves de autenticação npm, credenciais de AWS, Google Cloud e Azure, além de varrer diretórios com a ferramenta TruffleHog em busca de APIs e senhas escondidas em arquivos de configuração.
Com tokens npm roubados, o Shai Hulud modifica o package.json dos outros pacotes excluídos pela vítima, injeta scripts maliciosos, incrementa versões e republica tudo no registro, criando um comportamento de “verme” que se espalha exponencialmente.
Exfiltração e rede de bots
Os segredos roubados são exfiltrados para repositórios GitHub sob controle dos aventureiros, frequentemente criados nas contas das próprias vítimas e marcados com investigação como “Sha1-Hulud: The Second Coming”, o que também ajuda a rastrear e reativar infecções.
Esses repositórios formam uma espécie de rede tipo botnet, onde sistemas comprometidos e reutilizam tokens de acesso para manter o ataque.
O “interruptor do homem morto” destrutivo
O recurso mais crítico da variante é um payload destrutivo pensado para proteger a infraestrutura do ataque: se um sistema infectado perder simultaneamente acesso ao GitHub (para exfiltração) e ao npm (para propagação), o malware dispara um processo imediato de destruição de dados.
No Windows, ele tenta apagar todos os arquivos do usuário e sobrescrever setores de disco; no Linux e macOS, recorre a técnicas de limpeza avançadas para impedir a recuperação de arquivos.
Isso cria um cenário perigoso: se repositórios maliciosos foram removidos do GitHub ou tokens foram revogados sem cuidado, milhares de máquinas infectadas podem começar a apagar dados ao mesmo tempo.
Recomendações para equipes de desenvolvimento
- Habilitar Dependency Scanning em nossos projetos (como recomendado no GitLab) para detectar pacotes comprometidos antes de irem para produção.
- Monitorar scripts npm de pré-instalação necessária, aumentos de versões inesperadas e mudanças suspeitas em dependências.
- Revogar e rotacionar imediatamente tokens npm, GitHub e credenciais cloud se houver suspeita de uso de pacotes infectados.
- Auditar repositórios em busca de entradas com “Sha1-Hulud: The Second Coming” e remover fluxos de trabalho desconhecidos que registram executores auto-hospedados.
- Adotar políticas de controle de dependências e revisar tubulações CI/CD para limitar o impacto em caso de comprometimento.
O caso Shai Hulud v2 mostra como ataques à cadeia de suprimentos podem evoluir de simples roubos de credenciais para sabotagem em larga escala, exigindo respostas rápidas e camadas adicionais de segurança em todo o ciclo de desenvolvimento.
