Pesquisadores da JFrog descobriram nesta semana o IronWorm, um malware escrito em Rust que se auto-replica através de pacotes npm maliciosos. O worm infectou ao menos 36 pacotes e comprometeu nove organizações no ecossistema Web3, roubando credenciais de desenvolvedores e carteiras de criptomoedas por meio de um rootkit eBPF e comunicação via Tor.
Vetor de infecção inicial
O ataque teve origem na conta npm asteroiddao, vinculada à organização asteroid-dao no GitHub, dentro do ecossistema Arweave/WeaveDB. Pacotes legítimos foram republicados em versões trojanizadas numa janela estreita de tempo, cada um carregando um binário Linux ELF oculto em diretórios como tools/setup. A tática lembra a do worm npm que usava binding.gyp para roubo em massa, mas o IronWorm vai além com capacidade de auto-replicação.
O binário é executado automaticamente por um hook preinstall no package.json. Ao rodar npm install, o malware roda antes mesmo de o gerenciador resolver dependências — sem nenhuma ação adicional do desenvolvedor. As versões maliciosas foram descontinuadas em menos de 24 horas, e os commits suspeitos removidos dos repositórios de forma silenciosa.
Mecanismo de auto-replicação
Depois de infectar uma máquina, o IronWorm rouba credenciais do GitHub e injeta commits maliciosos em todos os repositórios acessíveis — uma evolução em relação a campanhas anteriores como o ataque Miasma que comprometeu pacotes oficiais da Red Hat. Esses commits introduzem ganchos de execução em build systems — via preinstall (npm), setup.py (PyPI) ou build-script (Cargo). Também substituem workflows do GitHub Actions por pipelines que roubam secrets usando ${{ toJSON(secrets) }}.
Os commits são forjados com data retroativa, copiando o timestamp do commit legítimo mais recente. Alguns aparecem como tendo mais de 13 anos. O nome do autor é falsificado como “claude”, imitando o assistente de IA da Anthropic, para reduzir suspeitas durante revisões de código.
A JFrog identificou 57 commits maliciosos em nove organizações no GitHub, incluindo weavedb, asteroid-dao, ArweaveOasis e warashibe. Uma conta comprometida registrou cerca de 4.500 contribuições a projetos privados no mês do ataque, indicando que o escopo visível pode ser uma fração do total.
Rootkit eBPF e evasão
O IronWorm emprega um rootkit baseado em eBPF compilado com clang 22.1.5 para ocultar processos e conexões de rede em nível de kernel. Em sistemas com kernel lockdown ativado, a eficácia do rootkit é reduzida. Todas as strings do binário são criptografadas com chaves individuais por ponto de chamada, exigindo análise manual de cada uma.
Os pesquisadores recuperaram referências a 86 variáveis de ambiente para credenciais de cloud e serviços de IA, endpoints da API do GitHub, identidades de bots e templates de injeção de código. A comunicação com o servidor de comando e controle acontece via rede Tor, com comandos para exfiltração de dados, entrega de payloads e shell remoto.
Em ambientes de CI, o malware solicita tokens OIDC para obter credenciais temporárias de publicação no npm — criando pacotes trojans sem manipular tokens diretamente. O binário também é empacotado com uma versão modificada do UPX que impede descompactação com ferramentas padrão.
| Etapa do ataque | Ação do malware | Impacto |
|---|---|---|
| Infecção inicial | Binário ELF via hook preinstall do npm | Execução automática sem interação do usuário |
| Roubo de credenciais | Varredura de 86 variáveis de ambiente | Chaves cloud, IA e carteiras cripto comprometidas |
| Propagação | Commits maliciosos em repositórios GitHub | Injeção de payloads em novos projetos |
| Persistência | Rootkit eBPF oculta processos e conexões | Detectável apenas com kernel lockdown |
| Exfiltração | C2 via Tor ou GitHub Actions artifacts | Dados extraídos sem conexão direta ao atacante |
Medidas de proteção
- Audite dependências npm: verifique se pacotes do ecossistema Arweave/WeaveDB estão em versões suspeitas. Compare checksums com registros oficiais.
- Revogue credenciais expostas: se instalou pacotes desse ecossistema recentemente, gire tokens do GitHub, chaves cloud e frases de recuperação de carteiras cripto.
- Ative kernel lockdown: em distribuições Linux compatíveis, habilite o modo lockdown para limitar rootkits eBPF.
- Monitore commits em repositórios: implemente proteção de branch e revisão obrigatória, especialmente em arquivos como
package.json,setup.pye workflows do GitHub Actions. - Integre scanners ao pipeline: ferramentas como o JFrog Xray detectam binários suspeitos em dependências antes da instalação em produção.
O IronWorm marca uma evolução nos ataques de cadeia de suprimentos de software: auto-replicante, multiplataforma e silencioso em ecossistemas de alto valor como Web3 e criptomoedas.