O que torna o TrapDoor particularmente perigoso não é apenas seu alcance multi-ecossistema, mas uma nova e engenhosa técnica de evasão que transforma os próprios assistentes de IA em armas. O malware insere instruções ocultas dentro dos arquivos .cursorrules e CLAUDE.md usando caracteres Unicode de largura zero — completamente invisíveis para um revisor humano, mas legíveis por ferramentas como Cursor e Claude Code. Estas IAs podem então ser ludibriadas a executar o roubo de credenciais sob o disfarce de uma inocente verificação de segurança .
A campanha operou simultaneamente nos três maiores registros de pacotes de código aberto, usando mecanismos técnicos distintos, sob medida para cada plataforma .
A maior parte dos pacotes maliciosos apareceu no npm, onde usavam gatilhos postinstall para executar automaticamente um coletor de credenciais assim que instalados. A carga principal, um script de cerca de 1.149 linhas chamado trap-core.js, vasculha sistematicamente o ambiente da vítima em busca de segredos e os envia para uma infraestrutura controlada pelos atacantes .
Os pacotes Python distribuídos pelo PyPI foram projetados para buscar e executar payloads JavaScript remotos no momento da importação. Uma vez em execução, eles implantavam a mesma lógica de roubo de credenciais das variantes do npm .
No principal registro do ecossistema Rust, os pacotes maliciosos abusavam dos scripts build.rs para executar o código de roubo de credenciais durante o processo de build. Isso garantia a execução antes mesmo que a funcionalidade pretendida do pacote fosse utilizada .
Os pacotes eram disfarçados como ferramentas legítimas para desenvolvedores, com nomes como token-usage-tracker, prompt-engineering-toolkit e eth-wallet-security-auditor. Esses nomes os faziam parecer úteis para as comunidades de desenvolvimento visadas .
A carga maliciosa do TrapDoor caça sistematicamente uma ampla gama de segredos de alto valor. De acordo com a análise da Socket, o malware coleta:
Os alvos específicos de carteiras mencionados nos relatórios incluem os dados das extensões de navegador MetaMask e Phantom . O roubo de tokens do GitHub é particularmente preocupante, pois pode permitir que os atacantes acessem repositórios de código-fonte privados, injetem código malicioso em pipelines de CI/CD ou se movam lateralmente através de identidades de desenvolvedores comprometidas
.
A investigação da Socket identificou como alvos primários os desenvolvedores das áreas de cripto, DeFi, Solana, Sui e IA . A convenção de nomes dos pacotes apelava diretamente para essas comunidades, com temas em torno de auditoria de segurança de carteiras, monitoramento de transações, desenvolvimento de contratos inteligentes e ferramentas de contexto para IA.
Os atacantes sabiam que os desenvolvedores nesses ecossistemas rotineiramente detêm chaves de carteiras com ativos significativos, acessam infraestrutura de nuvem e possuem permissões privilegiadas em várias cadeias de ferramentas de desenvolvimento — tornando uma única estação de trabalho comprometida a porta de entrada para danos financeiros e operacionais substanciais .
O aspecto tecnicamente mais inovador do TrapDoor é a exploração da confiança depositada nos assistentes de codificação por IA. O malware tenta modificar ou criar arquivos .cursorrules e CLAUDE.md — arquivos de configuração que os desenvolvedores usam para dar instruções específicas do projeto a ferramentas de IA como Cursor e Claude Code .
Dentro desses arquivos, os atacantes embutem instruções ocultas usando caracteres Unicode de largura zero (como U+200B, U+200C e U+FEFF). Esses caracteres são invisíveis em editores de texto e durante uma revisão de código padrão. Um desenvolvedor humano não vê nada de suspeito . No entanto, os assistentes de IA analisam o texto Unicode completo e podem ser enganados, interpretando as instruções ocultas como comandos legítimos. Isso pode levá-los a executar fluxos de trabalho de coleta de credenciais, exfiltrar código-fonte ou executar comandos shell arbitrários sem o conhecimento do desenvolvedor
.
Isso cria um comprometimento em dois estágios: primeiro, o pacote infecta o ambiente do desenvolvedor e rouba credenciais imediatas; segundo, o arquivo de configuração de IA envenenado transforma as próprias ferramentas de IA do desenvolvedor em vetores para uma exploração adicional. Pesquisas relacionadas já confirmaram que plataformas de agentes de IA em produção, incluindo Claude Code e GitHub Copilot, podem executar comandos arbitrários embutidos como instruções Unicode invisíveis em arquivos de habilidade do agente .
A infraestrutura de detecção da Socket identificou os lançamentos do TrapDoor com um tempo médio de detecção de apenas 5 minutos e 27 segundos, com a detecção mais rápida registrada em 58 segundos . Essa rápida identificação permitiu que os pesquisadores conectassem as publicações de pacotes aparentemente dispersas em uma única campanha coordenada em até 48 horas após o primeiro upload suspeito
.
Todos os 34 pacotes identificados nos três registros foram reportados aos mantenedores dos respectivos registros para remoção .
Se você ou sua equipe instalaram algum desses pacotes, aja imediatamente:
Gere novas frases-semente para suas carteiras de criptomoedas e mova os fundos para novas carteiras. Faça a rotação das chaves IAM da AWS, tokens de acesso pessoal do GitHub, pares de chaves SSH e quaisquer tokens de API armazenados em variáveis de ambiente . Revogue tokens OAuth para integrações de CI/CD.
Execute npm auditpip listCargo.lock em busca de qualquer um dos 34 pacotes maliciosos reportados . Pesquise o histórico dos arquivos de lock no git por esses nomes, remova qualquer correspondência e execute uma instalação limpa.
Verifique ~/.bashrc, ~/.zshrc, ~/.profile e ~/.config/fish/config.fish em busca de aliases suspeitos ou comandos curl e wget não comentados que possam estabelecer persistência .
Examine o diretório .git/hooks/ em cada repositório em busca de hooks pre-commit, post-commit ou pre-push não autorizados. O foco da campanha em tokens do GitHub torna o comprometimento de repositórios em nível de conta uma possibilidade real .
Revise o diretório .github/workflows/ em busca de arquivos de workflow inesperados, etapas suspeitas com curl ou wget e ações de terceiros não autorizadas. Verifique os logs de execução das Actions por requisições de rede de saída incomuns.
Pesquise em todos os projetos por arquivos .cursorrules e CLAUDE.md que contenham caracteres Unicode de largura zero. Um comando grep para detectar caracteres invisíveis é:
grep -P '[\x{200B}-\x{200F}\x{2028}-\x{202F}\x{FEFF}]' .cursorrules CLAUDE.mdVerifique cron jobs (crontab -l~/.config/systemd/user/) e LaunchAgents no macOS (~/Library/LaunchAgents/) por entradas maliciosas .
Integre ferramentas de escaneamento de segurança na sua pipeline de CI para detectar pacotes suspeitos antes da instalação. Considere o uso de ferramentas de detecção em tempo real que monitorem o acesso a arquivos de carteiras, chaves SSH, credenciais de nuvem e diretórios de dados de navegadores .
Comments
0 comments