Axios Hackeado: Uma Ameaça Global no npm

Pacote Popular de JavaScript sofre ataque na cadeia de suprimentos com RAT multiplataforma.

Ataque ao Axios npm

Contas de mantenedores do Axios foram comprometidas em 30 de março, resultando na publicação de duas versões maliciosas do amplamente utilizado cliente HTTP JavaScript: axios@1.14.1 e axios@0.30.4.

Estas versões injetaram uma dependência oculta que instalou silenciosamente um Cavalo de Troia de Acesso Remoto (RAT) multiplataforma em máquinas de desenvolvedores que executam macOS, Windows e Linux.

  • O Axios é baixado aproximadamente 100 milhões de vezes por semana no npm.

A Dependência Maliciosa

As versões comprometidas adicionaram uma única nova dependência ao manifesto do pacote: plain-crypto-js@4.2.1, um trojan projetado para se disfarçar como a biblioteca legítima crypto-js.

  • Este pacote nunca foi importado ou referenciado no código-fonte do Axios.
  • Sua única função era executar um script de pós-instalação.
  • O script contatava um servidor de comando e controle (C2) em sfrclak.com.
  • Baixava um payload RAT específico para a plataforma.
  • Destruía todas as evidências de sua própria execução.

Cronologia do Ataque

  • O ataque foi planejado ao longo de aproximadamente 18 horas.
  • Uma versão isca “limpa” de plain-crypto-js foi publicada para estabelecer um histórico.
  • As versões maliciosas axios@1.14.1 (às 00:21 UTC de 31 de março) e axios@0.30.4 (às 01:00 UTC) foram publicadas pela conta do mantenedor comprometido, cobrindo as branches de lançamento modernas (1.x) e legadas (0.x).

Modus Operandi do RAT

  • A análise da StepSecurity confirmou que o dropper fez sua primeira conexão externa ao servidor C2 apenas 1,1 segundos após o início da instalação via npm.
  • macOS: O binário do RAT foi gravado em /Library/Caches/com.apple.act.mond, imitando um processo do sistema Apple.
  • Windows: O malware copiou o PowerShell para %PROGRAMDATA%wt.exe e executou um script oculto.
  • Linux: Baixou um RAT baseado em Python para /tmp/ld.py.

Remoção de Evidências

Após a execução, o script setup.js deletava-se, removia seu próprio package.json contendo o hook malicioso de pós-instalação e o substituía por um “stub” limpo pré-existente, relatando um número de versão diferente. Uma inspeção forense posterior do pacote instalado não mostraria nada suspeito.

Detecção e Resposta

  • As versões maliciosas estiveram ativas por aproximadamente duas a três horas.
  • O npm as retirou do ar e impôs uma suspensão de segurança em plain-crypto-js.
  • Nenhuma das versões comprometidas aparece nas tags do repositório GitHub do Axios, confirmando que foram publicadas diretamente no registro npm fora do pipeline normal de CI/CD do projeto.

Recomendações Urgentes

StepSecurity, Snyk, Wiz e Vercel publicaram avisos recomendando que qualquer sistema onde o pacote malicioso tenha sido executado deve ser tratado como totalmente comprometido.

  • Recomenda-se a rotação imediata de todas as credenciais.
  • Para mais detalhes, consulte a issue de rastreamento do incidente no GitHub: axios/axios#10604.
Baseado no artigo de Tom’s Hardware