Um verme auto-replicante do npm chamado SANDWORM_MODE atinge mais de 19 pacotes, coletando chaves privadas, mnemónicas BIP39, ficheiros de carteiras e chaves API de LLM de ambientes de desenvolvimento.
Um ataque ativo à cadeia de fornecimento do npm está a varrer os ambientes de desenvolvimento neste momento. A Equipa de Investigação de Ameaças da Socket descobriu o que rastreia como SANDWORM_MODE, um verme auto-replicante espalhado por pelo menos 19 pacotes maliciosos do npm ligados a dois aliases de publicadores. Como a SocketSecurity destacou no X, trata-se de um ataque ativo à cadeia de fornecimento que rouba segredos de desenvolvimento e CI, injeta workflows do GitHub, envenena ferramentas de IA e recolhe chaves API de LLM.
A campanha baseia-se diretamente na família de vermes Shai-Hulud. As chaves privadas são as primeiras a serem comprometidas. Sem portão de tempo, sem atraso. Os artefactos de criptografia descobertos na importação são exfiltrados imediatamente através de um endpoint dedicado antes que qualquer outro estágio do payload seja ativado.
Deves Saber: As Ameaças à Segurança das Carteiras Estão a Escalar Deve Ler: Hack de Segurança da Trust Wallet: Como Proteger os Seus Ativos
O verme possui um design de duas fases. A fase 1 dispara instantaneamente na importação, recolhendo tokens do npm, tokens do GitHub, segredos do ambiente e chaves de criptografia apenas através de leitura de ficheiros. Sem execução de shell, sem ruído. Mnemónicas BIP39, chaves privadas do Ethereum, arrays de bytes do Solana, chaves WIF do Bitcoin e strings xprv são todos recolhidos na primeira passagem.
As chaves de criptografia deixam o computador imediatamente via POST HTTPS para um Cloudflare Worker em pkg-metrics[.]official334[.]workers[.]dev/drain. Isso acontece antes de qualquer verificação de portão de tempo. Antes mesmo de a fase 2 ser carregada.
A fase 2 fica atrás de um atraso de 48 horas, derivado de um hash MD5 do nome do host e do nome de utilizador. Vai mais fundo: gestores de palavras-passe via Bitwarden, 1Password e LastPass CLIs, armazéns SQLite locais incluindo Apple Notes e mensagens do macOS, e uma varredura completa do sistema de ficheiros em busca de ficheiros de carteiras. Em ambientes de CI, esse portão desaparece completamente. O payload completo dispara em GITHUB_ACTIONS, GITLAB_CI, CIRCLECI, JENKINS_URL e BUILDKITE sem esperar.
De acordo com a SocketSecurity no X, o verme também injeta workflows do GitHub e envenena ferramentas de IA, detalhes confirmados na divulgação técnica completa da Socket.
Também Vale a Pena Ler: $21M em Bitcoin apreendido devolvido após as autoridades congelarem transações
Três pacotes imitam Claude Code. Um tem como alvo o OpenClaw, um agente de IA que passou de 210.000 estrelas no GitHub. O módulo McpInject do verme implanta um servidor MCP falso no Claude Code, Claude Desktop, Cursor, configurações do VS Code Continue e Windsurf no disco. Cada um recebe uma entrada de ferramenta falsa apontando para um servidor malicioso oculto.
Esse servidor contém uma injeção de prompt embutida, instruindo assistentes de IA a ler silenciosamente chaves SSH, credenciais AWS, tokens do npm e segredos do ambiente antes de cada chamada de ferramenta. O modelo nunca informa o utilizador. A injeção bloqueia explicitamente essa ação.
Nove provedores de LLM são alvo para recolha de chaves API: OpenAI, Anthropic, Google, Groq, Together, Fireworks, Replicate, Mistra,l e Cohere. As chaves são extraídas de variáveis de ambiente e ficheiros .env, validadas contra padrões de formato conhecidos antes de serem exfiltradas.
A exfiltração ocorre através de três canais em cascata. Primeiro, HTTPS para o Cloudflare Worker, depois uploads autenticados via API do GitHub para repositórios privados usando codificação base64 dupla, e por último, tunelização DNS via consultas codificadas em base32 para freefan[.]net e fanfree[.]net. Um algoritmo de geração de domínios, alimentado por “sw2025”, fornece uma alternativa de fallback em dez TLDs caso tudo o resto falhe.
Para Ver: Glassnode Sinaliza Exaustão da Demanda por BTC
Os dois aliases de publicadores por trás da campanha são official334 e javaorg. Os 19 pacotes maliciosos confirmados incluem suport-color@1.0.1, claud-code@0.2.1, cloude@0.3.0, crypto-locale@1.0.0, secp256@1.0.0 e scan-store@1.0.0, entre outros. Quatro pacotes adicionais (ethres, iru-caches, iruchache e uudi) ainda não mostram payload malicioso.
O npm removeu os pacotes maliciosos. O GitHub derrubou a infraestrutura do ator de ameaças. A Cloudflare removeu os workers. Mas os defensores precisam agir agora, independentemente.
Se algum destes pacotes foi executado no teu ambiente, trata essa máquina como comprometida. Roda a rotação dos tokens do npm e do GitHub, rotaciona todos os segredos de CI, verifica os ficheiros .github/workflows/ por adições de pull_request_target que serializem ${{ toJSON(secrets) }}. Verifica a configuração do template global do git com git config –global init.templateDir. Revisa as configurações do assistente de IA para entradas inesperadas de mcpServers. Uma engine polimórfica inativa, usando deepseek-coder:6.7b, está embutida no verme e desativada nesta versão, o que significa que uma variante futura pode reescrever-se para evitar detecção.
Existe também um interruptor de emergência no código. Desativado por agora. Quando ativado, executa find ~ -type f -writable e destrói todos os ficheiros graváveis na diretoria home. O operador ainda está a iterar.