Pacotes NPM comprometidos
9 de Maio de 2025

Um pacote npm chamado 'rand-user-agent' foi comprometido em um ataque à cadeia de suprimentos para injetar código ofuscado que ativa um trojan de acesso remoto (RAT) no sistema do usuário.

O pacote 'rand-user-agent' é uma ferramenta que gera strings de agente de usuário aleatorizadas, útil em web scraping, testes automatizados e pesquisa de segurança.

Apesar de o pacote ter sido descontinuado, ele permanece bastante popular, com uma média de 45.000 downloads semanais.

No entanto, segundo pesquisadores da Aikido, atores de ameaças aproveitaram seu status semiabandonado, porém popular, para injetar código malicioso em lançamentos subsequentes não autorizados que provavelmente foram baixados por um número significativo de projetos downstream.

A Aikido detectou o comprometimento no dia 5 de maio de 2025, quando seu sistema de análise de malware sinalizou uma nova versão do rand-user-agent, número 1.0.110.

Após um exame mais detalhado, os pesquisadores encontraram código ofuscado escondido no arquivo 'dist/index.js' que só era visível se o usuário rolasse horizontalmente na visualização de código-fonte no site do npm.

A investigação mostrou que a última versão legítima do 'rand-user-agent' foi a 2.0.82, lançada 7 meses atrás.

As versões 2.0.83, 2.0.84 e também 1.0.110, que foram publicadas posteriormente, eram todas maliciosas e não tinham lançamentos correspondentes no repositório GitHub do projeto.

O código malicioso incorporado nas versões mais recentes cria um diretório oculto na pasta do usuário (~/.node_modules) e estende o 'module.paths' para que este caminho personalizado possa ser usado para carregar dependências, nomeadamente 'axios' e 'socket.io-client'.

Em seguida, abre uma conexão de socket persistente com o comando e controle (C2) do atacante em http://85.239.62[.]36:3306, e envia informações de ID da máquina incluindo nome do host, nome do usuário, tipo de OS e um UUID gerado.

Uma vez que o RAT está ativo, ele escuta um dos comandos abaixo:

cd <path> - Altera o diretório de trabalho atual
ss_dir – Reseta o dir de trabalho para o caminho do script
ss_fcd:<path> - Muda forçosamente para o diretório dado
ss_upf:f,d – Faz o upload de um único arquivo f para o destino d
ss_upd:d,dest – Faz o upload de todos os arquivos no diretório d para dest
ss_stop – Interrompe qualquer upload de arquivo em andamento
(qualquer outro) – Executa como um comando de shell usando child_process.exec()

No momento em que este texto foi escrito, as versões maliciosas foram removidas do repositório do pacote no npm, então a última versão disponível é segura, e os usuários devem revertê-la.

Entretanto, se você atualizou para as versões 2.0.83, 2.0.84 ou 1.0.110, é importante realizar uma varredura completa no sistema em busca de sinais de comprometimento.

Note que voltar para a versão legítima não remove o RAT do seu sistema.

Além disso, considere usar versões bifurcadas, mas ainda suportadas e monitoradas mais de perto, da ferramenta 'rand-user-agent'.

Foi divulgado o seguinte comunicado:

"No dia 5 de maio de 2025 (16:00 UTC), fomos alertados de que três versões não autorizadas do rand-user-agent haviam sido publicadas no registro do npm (1.0.110, 2.0.83, 2.0.84).

O código malicioso nunca estava presente em nosso repositório GitHub; ele foi introduzido apenas nos artefatos do npm, configurando isso como um clássico ataque à cadeia de suprimentos.

Nossa investigação (ainda em andamento) mostra que o adversário obteve um token de automação desatualizado de um funcionário e usou-o para publicar versões no npm.

Esse token não tinha sido associado à autenticação de dois fatores, permitindo ao atacante: publicar versões que não existiam no GitHub, incrementar os números das versões para parecerem legítimos, não deprecia nada, esperando que os novos lançamentos se propagassem antes que alguém notasse.

Não há evidências de uma violação em nosso repositório de código-fonte, pipeline de build ou rede corporativa.

O incidente foi limitado ao registro npm.

Pedimos desculpas a cada desenvolvedor e organização impactados por este incidente.

Proteger o ecossistema de código aberto é uma responsabilidade que levamos a sério, e estamos comprometidos com a total transparência enquanto fechamos cada lacuna que permitiu que esse ataque ocorresse."

Publicidade

Proteja sua empresa contra hackers através de um Pentest

Tenha acesso aos melhores hackers éticos do mercado através de um serviço personalizado, especializado e adaptado para o seu negócio. Qualidade, confiança e especialidade em segurança ofensiva de quem já protegeu centenas de empresas. Saiba mais...