A frente escondida de npm ataques com pacotes troceados rootkits eBPF e backdoors que ameaçam CI CD IDE e credenciais

Autor: Publicada 4 min de lectura 162 leituras

As imagens deste artigo foram geradas com inteligência artificial. Como publicamos

Nos últimos dias, o ecossistema npm sofreu uma onda de ataques pela cadeia de fornecimento que combina técnicas antigas e muito novas: pacotes legítimos troceados, hooks de instalação e binários nativos que executam um carregador em Rust com um rootkit no nível de kernel baseado em eBPF, além de variantes de vermes autorreplicantes que aproveitam credenciais roubadas para se espalhar entre repositórios e registries. A combinação de um info-stealer capaz de se esconder no kernel e de uma família de vermes que reutilizam credenciais faz com que esses incidentes não sejam simples infecções locais, mas armas de propagação sustentada que podem comprometer desde um portátil de desenvolvedor até pipelines de CI/CD e ambientes produtivos na nuvem.

As duas campanhas relatadas usam vetores distintos mas complementares: uma (identificada publicamente como “IronWorm”) publica pacotes troceados que executam um ELF em Rust através de hooks de pré-instalação; outra aproveita um mecanismo menos vigiado — um binding.gyp minúsculo, batizado pelos pesquisadores como “Phantom Gyp” – para executar código durante npm install e assim contornar muitas verificações. Ambas descarregam runtimes alternativos (como Bun) e buscam de forma agressiva credenciais relacionadas a provedores de nuvem, wallets de criptomoedas, runners do GitHub Actions e configurações de assistentes de código baseados em IA. O objetivo é duplo: exfiltrar segredos e deixar portas traseiras persistentes que se ativam cada vez que um desenvolvedor abre um projeto em um IDE com assistência por IA, um vetor especialmente perturbador para a segurança do desenvolvimento moderno.

A frente escondida de npm ataques com pacotes troceados rootkits eBPF e backdoors que ameaçam CI CD IDE e credenciais
Imagem gerada com IA.

Além do dano técnico, as implicações para a confiança na cadeia de abastecimento são profundas. Essas campanhas demonstram que os atores maliciosos podem usar o GitHub não só para armazenar exfiltração, mas como um canal de comando e controle adaptativo —modificando commits que contêm indicadores como "firedalazer" para mudar a carga útil — e que podem forjar metadados de publicação (SLSA) para que versões em registros pareçam legítimas. Quando a plataforma que usamos para colaborar se torna um canal para atualizar o próprio malware, os controles tradicionais na rede e os scanners de malware deixam de ser suficientes.

Para desenvolvedores e equipes que dependem de npm e GitHub, as medidas reativas imediatas são claras: rotar e revogar credenciais expostas, invalidar tokens curtos e chaves SSH, e eliminar qualquer token de npm que possa ter sido emitido por runners comprometidos. A médio prazo deve ser imposta uma política de construção mais rigorosa: definir versões com integridade do lockfile, desactivar a execução automática de programas de instalação em ambientes de desenvolvimento ( npm config set ignore-scripts true ou seu equivalente em outros gestores, e preferir builds reprodutíveis em runners efêmeros com privilégios mínimos. Também é crítico habilitar e revisar mecanismos de detecção no repositório, como a digitalização de segredos e a exigência de atestações de fornecimento (SLSA); a web do projeto SLSA oferece guias práticas sobre como melhorar a cadeia de confiança: https://slsa.dev/.

A frente escondida de npm ataques com pacotes troceados rootkits eBPF e backdoors que ameaçam CI CD IDE e credenciais
Imagem gerada com IA.

Na camada do sistema operacional, essas campanhas mostram a eficácia de payloads que usam eBPF para se esconder; se sua organização o permitir, considere limitar o uso de eBPF para processos não privilegiados e avaliar a adoção de mecanismos do kernel que reduzem a superfície, por exemplo a opção de bloqueio do kernel (kernel lockdown) em sistemas Linux, que impede certos tipos de hooks e pode frustrar técnicas de ocultação de processos: https://www.kernel.org/doc/html/latest/secure_boot/lockdown.html. Do lado da telemetria, priorice a instrumentação de runners CI para capturar processos e sockets, e configure a rotação automática de tokens emitidos através de fluxos de publicação de confiança.

As organizações também devem endurecer os seus fluxos de contribuição: aplicar proteção de ramos com revisões obrigatórias, exigir assinaturas verificadas para commits críticos, auditar contas com permissões de publicação e limitar a capacidade dos runners para emitir credenciais de longa vida. No GitHub, é conveniente ativar a digitalização de segredos e políticas que bloqueiem merges que indiquem arquivos executáveis suspeitos; a documentação oficial sobre secret scanning explica cobertura e opções que convém rever: https://docs.github.com/en/code-security/secret-scanning/about-secret-scanning.

Finalmente, a resposta eficaz exige coordenação: notificar os mantenedores de pacotes afetados, publicar instruções claras de remediação para usuários (que versões revogar ou bloquear), e compartilhar IoCs com a comunidade para que as ferramentas de segurança incorporem detecção de padrões como commits assinados por contas suspeitas ou artefatos subidos a partir de runners invulgares. A lição chave é que a segurança do software moderno já não é apenas proteger binários: é proteger os fluxos humanos e automáticos que publicam, compilam e distribuem código. A resiliência da cadeia de abastecimento será tanto técnica como processual.

Cobertura

Relacionadas

Mas notícias do mesmo assunto.