Novo vírus ataca NPM para roubar credenciais e dados de usuários

Um novo ataque à cadeia de suprimentos do npm está roubando credenciais de desenvolvedores e usando tokens de publicação comprometidos para se espalhar autonomamente por outros pacotes do ecossistema. A campanha foi identificada por pesquisadores da Socket e da StepSecurity em pacotes vinculados à Namastex Labs, empresa brasileira que comercializa soluções de agentes autônomos com IA.

Os pacotes afetados são: “@automagik/genie (versões 4.260421.33 a 4.260421.39)”, “pgserve (1.1.11 a 1.1.13), @fairwords/websocket (1.0.38 e 1.0.39)”, “@fairwords/loopback-connector-es (1.4.3 e 1.4.4)”, “@openwebconcept/design-tokens” e “@openwebconcept/theme-owc, ambos na versão 1.0.3.” No total, a Socket lista 16 versões comprometidas.

O Socket AI Scanner sinalizou o @automagik/[email protected] como malicioso, embora o pacote ainda apresentasse um volume significativo de downloads semanais no momento da análise. Imagem: Socket.

O @automagik/genie registrava 6.744 downloads semanais no momento da análise, com o Scanner de IA da Socket sinalizando o pacote como malicioso ainda com tráfego ativo. O pgserve somava cerca de 1.300 downloads semanais.

O @automagik/genie funciona como terminal de comandos para orquestração de agentes de IA, enquanto o pgserve é um servidor PostgreSQL, embutido para desenvolvimento e testes – perfil de usuário que atrai ambientes com alta concentração de credenciais sensíveis. As primeiras versões maliciosas do pgserve foram publicadas em 21 de abril às 22h14 UTC, com duas outras publicadas no mesmo dia.

O que o malware faz após a instalação

O payload é ativado no momento da instalação via “hook postinstall”, sem qualquer interação do usuário. A partir daí, o código executa quatro funções principais.

A primeira é a coleta de credenciais. O script varre variáveis de ambiente em busca de tokens, chaves de API, credenciais de provedores de nuvem como AWS, Azure e GCP, configurações de Kubernetes e Docker, material do Terraform e Vault, arquivos .env, chaves SSH e histórico de shell. Também tenta acessar o Chrome e carteiras de criptomoedas como MetaMask, Phantom, Exodus e Atomic Wallet.

O Socket AI Scanner classificou o malware detectado durante a instalação como um ladrão de credenciais com exfiltração baseada em canister e comportamento de propagação semelhante ao de um worm. Imagem: Socket.

Os dados coletados são exfiltrados por dois canais simultâneos: um webhook convencional em telemetry.api-monitor[.]com e um canister do Internet Computer Protocol (ICP), identificado como cjn37-uyaaa-aaaac-qgnva-cai.

O ICP funciona basicamente como uma infraestrutura descentralizada de blockchain, o que dificulta a derrubada do canal de comando e controle, já que não há um servidor centralizado para derrubar. Quando uma chave RSA está presente no pacote, os dados são criptografados com esquema híbrido AES-256-CBC e RSA-OAEP-SHA256 antes do envio.

Worm com capacidade de autopropagação no npm e no PyPI

A característica mais preocupante do ataque é sua lógica de autopropagação. Se o malware encontrar tokens de publicação npm no ambiente comprometido, em variáveis de ambiente ou no arquivo ~/.npmrc, ele identifica os pacotes que a vítima tem permissão para publicar, injeta o payload malicioso nesses pacotes e os republica com versão incrementada.

Os novos pacotes infectados repetem o mesmo processo quando instalados por outros desenvolvedores, criando um ciclo de propagação recursiva. A StepSecurity descreveu o comportamento como um worm de cadeia de suprimentos capaz de se injetar em todos os pacotes que um token comprometido pode publicar.

O malware também carrega lógica de propagação para o PyPI. Se credenciais Python estiverem disponíveis, o script gera um payload baseado em arquivo .pth, que é executado automaticamente na inicialização do Python, e usa o Twine para publicar pacotes Python infectados. Isso transforma o ataque em uma ameaça multi-ecossistema.

Sobreposição técnica com CanisterWorm

Os pesquisadores da Socket apontaram sobreposição significativa com o CanisterWorm, campanha anterior atribuída ao grupo TeamPCP que também usava canisters ICP como canal de C2.

O payload atual compartilha os mesmos métodos centrais: execução no momento da instalação, roubo de credenciais, exfiltração para fora do host e autopropagação via tokens roubados. O código malicioso inclui uma referência explícita a um método TeamPCP/LiteLLM. A Socket não fez atribuição definitiva com base nas evidências disponíveis.

Um indicador adicional de comprometimento é a ausência de tags Git correspondentes no repositório público do pgserve para as versões 1.1.12 e 1.1.13, o repositório tem tags públicas apenas até a v1.1.10, sugerindo que as versões maliciosas foram publicadas de forma anômala.

O que desenvolvedores devem fazer

Todas as versões listadas devem ser tratadas como maliciosas e removidas imediatamente de ambientes de desenvolvimento e pipelines de CI/CD. Em seguida, é necessário rotacionar todos os tokens npm, tokens do GitHub, credenciais de nuvem, chaves SSH e quaisquer outros segredos que possam ter estado presentes nos sistemas onde esses pacotes foram instalados.

A Socket recomenda ainda auditar pacotes relacionados que contenham o mesmo arquivo public.pem, o mesmo webhook host ou o mesmo padrão de postinstall, além de comparar os tarballs publicados no npm com as tags e releases públicas no GitHub para identificar discrepâncias.

Acompanhe o TecMundo nas redes sociais. Para mais notícias de segurança e tecnologia, inscreva-se em nossa newsletter e canal do YouTube.