Como a infecção acontece
A campanha IronWorm utiliza pacotes npm maliciosos publicados sob a conta asteroiddao, vinculada à organização asteroid-dao no GitHub e ao ecossistema Arweave/WeaveDB. O mecanismo de gatilho é um hook preinstall no package.json que executa um binário Linux ELF escondido no diretório tools/ antes mesmo da resolução de dependências.
O binário, empacotado com UPX modificado para dificultar análise, tem 976 KB e se esconde entre arquivos legítimos do SDK do WeaveDB. Quando o desenvolvedor executa npm install, o binário é disparado automaticamente sem nenhuma interação adicional. O malware no npm que usa Hugging Face para roubo de dados documentado anteriormente segue padrão semelhante de abuso de hooks de instalação.
O malware foi descoberto em operação ativa pela equipe de pesquisa da JFrog, que identificou a campanha como uma evolução sofisticada do ataque Shai-Hulud, anteriormente documentado no ecossistema npm.
Mecanismo de autorreplicação
O IronWorm opera com dois payloads distintos para maximizar a propagação:
- Payload binário (observado em operação): segmenta repositórios em npm, PyPI, Cargo, Conan e vcpkg, injetando binários maliciosos e modificando sistemas de build para executá-los. Os commits são atribuídos ao autor “claude”, imitando assistentes de IA.
- Payload de GitHub Actions (detectado mas não acionado): substitui workflows CI/CD existentes por jobs que exfiltram todos os secrets do repositório via upload de artefatos, sem necessidade de comunicação C2 externa.
Em ambientes CI com OIDC habilitado, o malware solicita tokens de publicação automatizada e publica versões troianizadas diretamente no npm registry, sem credenciais roubadas. Esse modelo de propagação lembra a campanha GlassWorm desmantelada anteriormente, que também segmentava desenvolvedores de forma sistemática.
O que o malware rouba
O IronWorm coleta credenciais em escopo extensivo, monitorando 86 variáveis de ambiente e mais de 20 caminhos de arquivos de credenciais em desenvolvedores:
| Categoria | Exemplos de alvos |
|---|---|
| Cloud providers | AWS, GCP, Azure, DigitalOcean |
| IA e LLM | OpenAI, Anthropic, Gemini, Cohere, Mistral, Groq, Perplexity, xAI |
| Ferramentas de desenvolvedor | Claude Code, Codex, Cursor, Gemini Settings |
| Infraestrutura | Kubernetes, Docker, Vault, databases |
| Carteiras cripto | Exodus Desktop (seed + senha capturadas) |
O módulo de ataque à carteira Exodus merece destaque: o malware injeta hooks JavaScript para capturar a senha e o seed mnemonic do usuário, além de enfraquecer a segurança do Electron desabilitando sandbox, contextIsolation e webSecurity.
Para comunicação com o servidor de comando, o IronWorm utiliza a rede Tor e emprega um rootkit eBPF que opera em nível de kernel para se ocultar de ferramentas de detecção convencionais.
Como detectar e mitigar
Equipes de segurança e desenvolvedores devem adotar as seguintes ações:
- Auditar dependências npm em busca de hooks preinstall ou postinstall que executem binários, especialmente em caminhos como tools/ ou .github/scripts/.
- Verificar se pacotes relacionados ao weavedb-sdk ou asteroid-dao estão presentes em lockfiles e removê-los imediatamente.
- Rotacionar todos os secrets e tokens de acesso que possam ter sido expostos em repositórios com CI/CD ativo, incluindo tokens OIDC de publicação npm.
- Monitorar workflows do GitHub Actions por alterações não autorizadas, commits de identidades como “dependabot”, “renovate” ou “github-actions” em repositórios que não utilizam essas ferramentas.
- Implementar verificações de integridade em pacotes npm com lockfile-lint ou ferramentas similares antes da instalação em ambientes de produção.