Uma campanha maliciosa distribuiu 101 pacotes npm comprometidos, baixados 490 mil vezes, para inscrever desenvolvedores em grupos de WhatsApp sem consentimento.

A operação, batizada de PhantomSub, explora o projeto Baileys (uma biblioteca de código aberto para integração com WhatsApp) e usa técnicas de ofuscação para passar despercebida em auditorias iniciais. Os pacotes maliciosos foram publicados no repositório público npm, repositório central onde desenvolvedores baixam dependências para seus projetos.

A escala da ameaça npm

Os números revelam o alcance real do ataque. Quase meio milhão de downloads significa que uma quantidade significativa de máquinas de desenvolvimento ou servidores de produção pode estar comprometida sem que os proprietários saibam. O npm é usado em praticamente todo projeto Node.js moderno — desde startups até grandes empresas — o que torna essa cadeia de suprimento um alvo de alto valor.

O padrão aqui não é novo, mas a execução é refinada. Os agressores não tentaram fazer algo óbvio como roubar credenciais ou instalar backdoors diretos. Ao invés disso, eles inscrevem desenvolvedores em grupos de WhatsApp, possivelmente para enviar mensagens de phishing, vender serviços ilícitos ou construir uma base para futuros ataques direcionados.

Como a PhantomSub funciona na prática

O ataque segue um padrão simples mas eficaz:

  1. Desenvolvedor executa npm install numa dependência aparentemente legítima
  2. O pacote malicioso baixa e executa código durante a instalação
  3. Uma conexão com WhatsApp é aberta usando credenciais do Baileys
  4. O desenvolvedor é adicionado a grupos de WhatsApp controlados pelos atacantes
  5. Nenhuma notificação clara é exibida — o código roda em silêncio

A razão de usar o Baileys é prática: a biblioteca não requer autenticação via QR code ou token oficial do WhatsApp. Isso significa que os atacantes conseguem automatizar o processo de inscrição em escala sem interação manual.

Quando o PratiqueTech analisou campanhas similares antes, notamos que a maioria dos desenvolvedores só percebe o comprometimento semanas depois — quando começam a receber mensagens estranhas em grupos de WhatsApp que não sabem como entraram.

Por que npm é tão vulnerável

O npm tem um modelo de confiança frágil. Qualquer pessoa com uma conta pode publicar pacotes públicos sem verificação prévia. Existem filtros de malware, sim, mas eles são reativos: só detectam o que já foi denunciado ou o que é óbvio demais.

Os 101 pacotes da PhantomSub provavelmente usavam nomes que imitavam bibliotecas populares (técnica chamada typosquatting) ou prometiam funcionalidades úteis que não entregavam. Alguns desenvolvedores instalaram por engano; outros, ignorando avisos.

Além disso, npm não exige que você revise o código de dependências antes de instalar. Você confia que o mantenedor é quem diz ser. Se a conta foi comprometida ou é falsa desde o início, você está vulnerável.

O que fazer agora

| Ação | Urgência | Quem | |——|———-|——| | Auditar dependências npm instaladas | Alta | Todos os devs | | Rodar npm audit no seu projeto | Alta | Todos os devs | | Verificar grupos de WhatsApp inesperados | Média | Pessoalmente | | Remover pacotes suspeitos | Alta | Imediatamente | | Atualizar npm para última versão | Média | Em breve |

Se você mantém um projeto Node.js, execute agora mesmo:

npm audit
npm list

Procure por pacotes que não reconhece ou que foram adicionados recentemente por alguém da equipe sem documentação clara. Remova tudo que pareça suspeito.

Também vale a pena verificar seu histórico de grupos de WhatsApp nos últimos meses. Se encontrar grupos com nomes genéricos ou sem contatos conhecidos — especialmente grupos grandes — saia imediatamente.

Perguntas frequentes

Como saber se fui afetado pela PhantomSub? Execute npm list e procure pelos nomes dos 101 pacotes comprometidos (consultáveis nos avisos de segurança do npm). Se nenhum deles aparecer, você não foi afetado diretamente. Mesmo assim, revise seus grupos de WhatsApp.

Posso confiar em npm audit para detectar isso? Parcialmente. O comando detecta vulnerabilidades conhecidas e pacotes removidos, mas só após a denúncia. Se o pacote for novo e ofuscado, pode passar despercebido na primeira vez. Adicione npm audit --audit-level=moderate para ser mais rigoroso.

Vale a pena usar npm ainda? Sim, mas com cuidado. npm é essencial para projetos Node.js. O que mudou é que você precisa auditar dependências regularmente, congelar versões em package-lock.json e desconfiar de pacotes pouco conhecidos. Alternativas como Yarn ou pnpm oferecem verificações adicionais, mas o risco existe em qualquer repositório de pacotes.

Se você trabalha com npm em produção, considere usar um verificador de integridade de pacotes para validar configurações críticas antes de cada deploy.



Fonte: SC Media — 30/09/2026