Ataque à cadeia de suprimentos da Axios distribui RAT multiplataforma por conta npm comprometida
31 de Março de 2026

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

Traçamos um caminho para você ir do zero ao avançado em hacking

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...