Uma campanha coordenada de ataque à cadeia de distribuição de software comprometeu simultaneamente três dos principais repositórios de pacotes do mundo. A operação, batizada de TrapDoor, espalhou mais de 34 pacotes maliciosos em mais de 384 versões distribuídas no npm, no PyPI e no Crates.io ao longo do fim de semana de 22 de maio de 2026. A descoberta é dos pesquisadores da empresa de segurança Socket.
Os pacotes foram projetados para parecer ferramentas legítimas de desenvolvimento. Nomes como wallet-security-checker, eth-security-auditor e defi-risk-scanner sugerem utilitários de segurança, mas na prática instalam malware no computador do desenvolvedor assim que são baixados.
smart_display
Nossos vídeos em destaque
O que é um ataque de supply chain
Um ataque de cadeia de suprimentos de software acontece quando um criminoso insere código malicioso em pacotes que desenvolvedores usam no dia a dia. Basicamente, em vez de invadir um sistema diretamente, o atacante contamina uma ferramenta que o desenvolvedor já confia e instala por conta própria. É o terceiro caso registrado na última semana, quando noticiamos campanhas ligadas ao TeamPCP, chamadas Mini Shai-Hulud e Shai-Hulud.
Neste caso mais recente, os pacotes fingiam ser auxiliares de projeto, ferramentas de auditoria de segurança e utilitários de ambiente de desenvolvimento. A estratégia funcionou porque os nomes escolhidos fazem sentido dentro do vocabulário de quem trabalha com criptomoedas, inteligência artificial ou contratos inteligentes.
O que o malware rouba
Assim que instalado, o código malicioso começa a vasculhar o computador da vítima. A lista do que o TrapDoor tenta coletar é extensa:
- chaves SSH;
- carteiras das redes Sui;
- Solana e Aptos, credenciais da AWS;
- tokens do GitHub, dados de perfis de navegadores;
- senhas salvas;
- e variáveis de ambiente e chaves de API.
No caso dos pacotes npm, o malware roda um arquivo chamado trap-core.js, um script com mais de mil linhas que não só coleta as credenciais como também valida se elas ainda estão ativas, consultando as APIs da AWS e do GitHub. Isso permite que o atacante separe as credenciais úteis das que já expiraram.
)
Como cada plataforma foi atacada de um jeito diferente
A campanha usou técnicas diferentes para cada ecossistema. No npm, os pacotes aproveitam os chamados hooks de pós-instalação: assim que o desenvolvedor instala o pacote, um script roda automaticamente em segundo plano, sem que ninguém perceba.
No PyPI, a abordagem é um pouco diferente. O malware entra em ação no momento em que a biblioteca é importada no código. Nesse ponto, ele baixa um payload JavaScript de um servidor externo controlado pelo atacante e o executa localmente. A vantagem para o criminoso é que ele pode atualizar o código malicioso sem precisar publicar uma nova versão do pacote.
Já no Crates.io, repositório de pacotes da linguagem Rust, os pacotes miraram desenvolvedores que trabalham com os projetos Sui e Move. Eles usam o arquivo build.rs, um script que o Rust executa automaticamente durante a compilação do código.
)
Isso significa que o malware pode rodar antes mesmo de o desenvolvedor testar qualquer funcionalidade da biblioteca. Os dados coletados são criptografados e enviados para o GitHub Gists, um serviço legítimo de compartilhamento de código.
Instruções escondidas para enganar assistentes de IA
Um dos aspectos mais incomuns do TrapDoor é o uso de arquivos de configuração para manipular ferramentas de IA. Os pacotes criam arquivos como .cursorrules e CLAUDE.md dentro dos projetos das vítimas. Esses arquivos são usados por assistentes de programação baseados em inteligência artificial para entender as regras do projeto.
O que o atacante fez foi inserir instruções ocultas nesses arquivos usando caracteres Unicode invisíveis. O objetivo é fazer com que o assistente de IA, ao ler o projeto, execute uma suposta “auditoria de segurança” que na verdade coleta e envia informações sensíveis para o servidor do criminoso.
)
Para ampliar o alcance dessa técnica, o mesmo responsável pela campanha abriu pull requests em repositórios populares de projetos de IA, como o LangChain, o LangFlow e o browser-use. Cada PR propunha adicionar um desses arquivos de configuração maliciosos ao projeto, disfarçado como documentação de boas práticas para desenvolvedores.
Como a Socket identificou a campanha
A Socket detectou os primeiros pacotes maliciosos em média 5 minutos e 56 segundos após a publicação. O pacote mais antigo registrado foi o eth-security-auditor, no PyPI, publicado às 20h20 UTC do dia 22 de maio.
A conexão entre os três ecossistemas só ficou clara durante a análise dos pacotes no Crates.io, quando a infraestrutura e o comportamento dos scripts mostraram sobreposição com os pacotes do npm e do PyPI. Todos os pacotes identificados foram classificados como maliciosos e reportados aos repositórios afetados.
Acompanhe o TecMundo nas redes sociais. Inscreva-se em nossa newsletter e canal do YouTube.
