O ecossistema de software moderno depende de uma cadeia de suprimentos cada vez mais complexa, onde pequenas bibliotecas podem ter acesso direto a ambientes críticos de produção. Nesse cenário, surge o CanisterSprawl, um worm autopropagável identificado recentemente em campanhas de ataques à cadeia de suprimentos que afetam o npm e o PyPI.
O perigo não está apenas na infecção inicial, mas na capacidade do malware de se espalhar automaticamente entre pacotes, repositórios e pipelines de CI/CD. Pesquisadores da Socket e da StepSecurity observaram que a campanha combina técnicas tradicionais de roubo de tokens de desenvolvedor com automação baseada em IA para ampliar sua escala e persistência.
O resultado é um vetor de ataque que explora desde hooks de instalação até integrações com GitHub Actions, comprometendo credenciais sensíveis e expondo ambientes inteiros sem interação direta do atacante.
Como funciona o worm CanisterSprawl
O CanisterSprawl opera de forma silenciosa, aproveitando principalmente o mecanismo de scripts de pós-instalação (post-install hooks) presentes em ecossistemas como npm e PyPI.

Exploração de hooks de pós-instalação
O ponto de entrada mais comum do worm está em scripts executados automaticamente durante a instalação de dependências. Esses scripts permitem que pacotes executem código arbitrário após o download, e o malware se aproveita disso para:
- Executar scripts ocultos em post-install hooks
- Escanear variáveis de ambiente em busca de segredos
- Coletar tokens npm, chaves SSH e credenciais de cloud
- Inserir backdoors persistentes no ambiente local
Uma vez ativo, o CanisterSprawl não apenas coleta dados, mas também prepara o ambiente para propagação.
Exfiltração de dados para canisters ICP
Um diferencial técnico do CanisterSprawl é o uso de canisters do Internet Computer (ICP) como endpoint de exfiltração. Isso dificulta a detecção, já que o tráfego se mistura com requisições legítimas de blockchain.
Os principais dados coletados incluem:
- tokens npm e tokens de autenticação de registries privados
- Credenciais de serviços cloud (AWS, GCP, Azure)
- Segredos armazenados em arquivos
.env - Chaves de acesso de pipelines CI/CD como GitHub Actions
Essa abordagem transforma o malware em um sistema distribuído de coleta de dados difícil de bloquear com filtros tradicionais.
Pacotes npm afetados
Durante a análise da campanha, foram identificados pacotes comprometidos ou trojanizados com versões específicas:
@utils-logger/corev2.1.4node-http-fetcherv3.0.7react-dev-utils-litev1.9.2json-schema-validator-prov0.4.8
Esses pacotes simulam utilitários comuns, o que aumenta a taxa de instalação acidental em projetos reais. Em todos os casos, o payload do CanisterSprawl era ativado durante a instalação inicial.
Além do roubo de dados: a autopropagação no PyPI e GitHub
O aspecto mais preocupante do CanisterSprawl não é apenas o roubo de dados, mas sua capacidade de autopropagação entre ecossistemas diferentes.
Criação automática de pacotes infectados
Após comprometer um ambiente de desenvolvedor, o malware tenta:
- Publicar novos pacotes no npm com versões incrementadas
- Criar pacotes equivalentes no PyPI com nomes semelhantes
- Copiar dependências legítimas e injetar código malicioso
- Reutilizar tokens npm roubados para autenticação automática
Esse comportamento cria um efeito de “multiplicação” que acelera a disseminação da ameaça.
Exploração de GitHub Actions e prt-scan
Outro vetor explorado envolve workflows de CI/CD, especialmente quando mal configurados com permissões excessivas.
O ataque conhecido como prt-scan explora o evento pull_request_target no GitHub Actions, permitindo execução de código em contexto privilegiado. Com isso, o CanisterSprawl consegue:
- Executar scripts em ambientes de build com acesso a segredos
- Capturar variáveis de ambiente sensíveis
- Persistir em pipelines automatizados
- Exfiltrar dados diretamente durante o build
Esse tipo de abuso reforça a importância de revisar cuidadosamente permissões em workflows automatizados.
O papel dos roteadores de IA e proxies maliciosos
Uma das evoluções mais sofisticadas observadas nesse tipo de malware PyPI é o uso de componentes baseados em IA para disfarçar comportamento malicioso.
Pacotes como kube-health-tools foram identificados utilizando proxies de LLM (large language models) para:
- Gerar código aparentemente legítimo sob demanda
- Injetar payloads apenas em determinados contextos
- Evitar detecção por análise estática tradicional
- Alterar comportamento com base no ambiente de execução
Esses “roteadores de IA” funcionam como camadas intermediárias que decidem quando ativar componentes maliciosos, dificultando a análise por ferramentas convencionais de segurança.
Além disso, o uso de proxies dinâmicos permite que o malware adapte suas técnicas conforme o ambiente, tornando a detecção ainda mais complexa.
Conclusão e boas práticas de defesa
O surgimento do CanisterSprawl reforça uma tendência clara: ataques à cadeia de suprimentos estão se tornando mais automatizados, adaptativos e difíceis de detectar. O uso combinado de scripts de instalação, IA e autopropagação cria um cenário de risco elevado para qualquer organização que dependa de npm, PyPI ou pipelines modernos de CI/CD.
Para reduzir a exposição, algumas práticas são essenciais:
- Ativar autenticação em dois fatores (2FA) em contas npm e PyPI
- Revisar cuidadosamente dependências e scripts de instalação
- Evitar execuções automáticas de post-install hooks sem auditoria
- Rotacionar regularmente tokens npm e chaves de acesso
- Monitorar e restringir permissões em GitHub Actions
- Manter segredos fora de repositórios e arquivos
.env - Implementar ferramentas de análise de dependência e SBOM
Em ambientes modernos, segurança não é apenas uma camada adicional, mas parte fundamental do ciclo de desenvolvimento.
