O popular cliente HTTP Axios sofreu um ataque à cadeia de suprimentos após duas versões recém-publicadas no npm conterem uma dependência maliciosa.
As versões 1.14.1 e 0.30.4 do Axios foram identificadas com a injeção do pacote "plain-crypto-js" na versão 4.2.1, apresentada como uma dependência falsa.
Segundo a StepSecurity, essas versões foram publicadas com as credenciais comprometidas do principal mantenedor do Axios ("jasonsaayman"), o que permitiu aos atacantes burlar o pipeline CI/CD do projeto no GitHub Actions.
O pesquisador de segurança Ashish Kurmi explicou que "o único objetivo dessa dependência é executar um script pós-instalação que funciona como um trojan de acesso remoto (RAT) multiplataforma, afetando macOS, Windows e Linux.
O dropper contata um servidor de comando e controle (C2) ativo e entrega payloads específicos para cada sistema operacional.
Após a execução, o malware se autoexclui e substitui o package.json por uma versão limpa, para evitar detecção forense".
Usuários que possuem as versões 1.14.1 ou 0.30.4 do Axios instaladas devem imediatamente rotacionar suas credenciais e fazer downgrade para versões seguras, como 1.14.0 ou 0.30.3.
As versões maliciosas, assim como o pacote "plain-crypto-js", foram removidas do repositório npm e não estão mais disponíveis para download.
Com mais de 83 milhões de downloads semanais, o Axios é um dos clientes HTTP mais usados no ecossistema JavaScript, presente em frameworks front-end, serviços back-end e aplicações corporativas.
Kurmi afirmou ainda que "esse ataque não foi oportunista.
A dependência maliciosa foi preparada com 18 horas de antecedência.
Foram pré-construídos três payloads distintos para cada sistema operacional e ambas as branches de release foram comprometidas em 39 minutos.
Cada vestígio foi projetado para se auto-destruir".
A linha do tempo do ataque é a seguinte:
- 30 de março de 2026, 02h57 (horário de Brasília): publicação da versão limpa "[email protected]".
- 30 de março de 2026, 20h59: publicação da versão maliciosa "[email protected]" com o payload embutido.
- 31 de março de 2026, 21h21: publicação da versão "[email protected]" que injeta "[email protected]" como dependência em tempo de execução, utilizando a conta comprometida "jasonsaayman".
- 31 de março de 2026, 22h00: publicação da versão "[email protected]" com a mesma injeção maliciosa, também pela conta comprometida.
De acordo com a StepSecurity, o ator por trás da campanha controlou a conta npm "jasonsaayman" e alterou o e-mail registrado para um endereço Proton Mail sob seu domínio ("[email protected]").
O pacote malicioso "plain-crypto-js" foi publicado pelo usuário npm "nrwise" com e-mail "[email protected]".
Acredita-se que o atacante tenha obtido um token de acesso clássico de longa duração para essa conta, permitindo publicar versões envenenadas do Axios diretamente no registro npm.
O malware embutido é executado por um dropper Node.js ofuscado ("setup.js") e segue três caminhos distintos conforme o sistema operacional:
- No macOS, ele executa um payload via AppleScript para baixar um trojan binário do servidor externo "sfrclak.com:8000", salva-o em "/Library/Caches/com.apple.act.mond", modifica suas permissões para tornar o arquivo executável e o inicia em segundo plano via /bin/zsh.
O arquivo AppleScript é apagado após a execução para encobrir rastros.
- No Windows, o dropper localiza o caminho do binário PowerShell, copia-o para "%PROGRAMDATA%\wt.exe" (disfarçado como o aplicativo Windows Terminal), cria um script Visual Basic (VBScript) na pasta temporária e o executa.
Esse script contata o mesmo servidor para baixar um script RAT em PowerShell e o executa, apagando o arquivo baixado em seguida.
- Em outras plataformas como Linux, ele roda um comando shell via execSync do Node.js para baixar um script RAT em Python do servidor, salva-o em "/tmp/ld.py" e o executa em segundo plano com o comando nohup.
"Cada plataforma envia um corpo POST distinto para a mesma URL do servidor C2 — packages.npm.org/product0 (macOS), product1 (Windows) e product2 (Linux).
Isso permite que o servidor responda com payloads apropriados para cada sistema a partir de um único endpoint", explicou a StepSecurity.
O payload de segunda fase para macOS é um RAT em C++ que coleta informações do sistema e se comunica com o servidor remoto a cada 60 segundos para receber comandos.
Entre suas funções estão execução de payloads adicionais, comandos shell, enumeração do sistema de arquivos e encerramento do RAT.
Após o lançamento do payload principal, o malware Node.js realiza três etapas para limpeza forense: remove o script pós-instalação do diretório do pacote, apaga o arquivo "package.json" que chama o dropper e renomeia "package.md" para "package.json".
O arquivo "package.md" contém um manifesto limpo, sem o hook pós-instalação malicioso, evitando suspeitas.
A StepSecurity destacou que "nenhuma linha de código malicioso está presente no código-fonte do Axios.
O ataque ocorre via injeção de uma dependência falsa, [email protected], que não é sequer importada pelo Axios, tendo como único propósito rodar o script pós-instalação que distribui um RAT multiplataforma".
Para identificar se houve comprometimento, recomenda-se:
- Verificar versões maliciosas do Axios instaladas.
- Procurar por artefatos do RAT: "/Library/Caches/com.apple.act.mond" (macOS), "%PROGRAMDATA%\wt.exe" (Windows) e "/tmp/ld.py" (Linux).
- Fazer downgrade para as versões Axios 1.14.0 ou 0.30.3.
- Remover a pasta "plain-crypto-js" dentro do diretório "node_modules".
- Caso sejam encontrados artefatos do RAT, considerar o ambiente comprometido e rotacionar todas as credenciais.
- Auditar pipelines CI/CD para identificar execuções que tenham instalado as versões afetadas.
- Bloquear o tráfego de saída para o domínio do servidor de comando e controle "sfrclak[.]com".
A Socket, em análise própria, identificou dois outros pacotes que distribuíam o mesmo malware por meio de dependências vendorizadas:
- @shadanai/openclaw (versões 28.03.2026-2, 28.03.2026-3, 31.03.2026-1 e 31.03.2026-2)
- @qqbrowser/openclaw-qbot (versão 0.0.130)
No caso do "@shadanai/openclaw", o pacote incorpora diretamente o payload malicioso "plain-crypto-js" dentro de seus arquivos.
Já o "@qqbrowser/[email protected]" inclui uma versão adulterada do "[email protected]" em sua pasta "node_modules", com a dependência "plain-crypto-js" injetada.
A empresa de segurança destacou que "o Axios legítimo possui apenas três dependências, follow-redirects, form-data e proxy-from-env.
A adição do plain-crypto-js é uma modificação clara.
Quando o npm processa essa versão vendorizada do Axios, instala o plain-crypto-js e aciona a cadeia maliciosa pós-instalação".
Publicidade
Conheça a Solyd One, e tenha acesso a todos os cursos de segurança ofensiva da Solyd, todas as certificações práticas, incluindo a SYCP, 2 CTFs anuais com prêmios de até 30 mil reais, dezenas de laboratórios realísticos, suporte, comunidade e muito mais. Saiba mais...