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.

Fontes