
Versões publicadas com uma conta npm comprometida adicionaram a dependência falsa plain-crypto-js@4.2.1, acionando um dropper pós-instalação para Windows, macOS e Linux.
| Componente | Pacote npm axios nas versões 1.14.1 e 0.30.4, com inclusão da dependência falsa plain-crypto-js@4.2.1. |
| Vetor | Publicação direta no registro npm usando credenciais comprometidas da conta jasonsaayman, contornando o fluxo normal de CI/CD do projeto. |
| Impacto | Execução automática de um script postinstall que baixa e inicia um RAT específico para Windows, macOS ou Linux, com capacidade de reconhecimento, execução de comandos e carregamento de payloads adicionais. |
| Prioridade | Remover as versões afetadas, reverter para 1.14.0 ou 0.30.3, investigar artefatos do RAT e rotacionar credenciais em sistemas onde os pacotes maliciosos foram instalados. |
| Artefatos | O dropper usa setup.js; artefatos citados incluem /Library/Caches/com.apple.act.mond, %PROGRAMDATA%\wt.exe, %PROGRAMDATA%\system.bat e /tmp/ld.py. |
| IoCs | Domínio de C2 defangado sfrclak[.]com; o fluxo também usa caminhos defangados como packages[.]npm[.]org/product0, product1 e product2 para diferenciar plataformas. |
O pacote npm axios, um cliente HTTP amplamente usado em aplicações JavaScript, foi afetado por um ataque de cadeia de suprimentos em duas versões publicadas no registro npm. As versões 1.14.1 e 0.30.4 passaram a declarar plain-crypto-js@4.2.1 como dependência, apesar de essa biblioteca não fazer parte do conjunto legítimo de dependências do projeto. O pacote falso foi usado como ponto de execução: seu objetivo era acionar um script de pós-instalação que atuava como dropper de um trojan de acesso remoto multiplataforma.
A adulteração não ocorreu por modificação direta do código-fonte do Axios. O comportamento malicioso ficou concentrado em uma dependência transitiva, acionada automaticamente pelo ciclo de vida do npm durante a instalação. Isso reduz a chance de detecção por revisões baseadas apenas em diferenças no repositório principal, porque o pacote de alto nível pode parecer normal enquanto a dependência adicionada executa lógica externa. A operação atingiu dois ramos de versão em intervalo curto, usando uma conta npm de mantenedor comprometida, o que deu ao atacante capacidade de publicar versões envenenadas diretamente no ecossistema.
A sequência começa com a publicação de uma versão limpa de plain-crypto-js@4.2.0 em 30 de março de 2026, seguida pela versão 4.2.1 contendo o payload. Depois, axios@1.14.1 foi publicado às 00:21 UTC de 31 de março de 2026 com a dependência falsa, e axios@0.30.4 recebeu a mesma alteração às 01:00 UTC. A janela mostra preparação prévia da dependência maliciosa antes da alteração nos pacotes Axios. O contexto também indica que a conta jasonsaayman teve credenciais npm comprometidas e que o endereço de e-mail registrado foi alterado para uma conta Proton Mail sob controle do operador.
O componente malicioso é lançado por um dropper Node.js ofuscado chamado setup.js. Durante a instalação, ele identifica o sistema operacional e seleciona um dos caminhos de execução. No macOS, a cadeia aciona um fluxo de download de binário e execução em segundo plano; no Windows, a cadeia prepara componentes em %PROGRAMDATA% e usa um RAT em PowerShell; em Linux e outros sistemas compatíveis, a cadeia baixa um script Python e o inicia em segundo plano. Os detalhes operacionais suficientes para reprodução não são necessários para defesa; o ponto crítico é que a execução ocorre no momento da instalação do pacote, antes que a aplicação que depende de Axios seja necessariamente iniciada.
Os três RATs compartilham desenho operacional semelhante. As variantes mantêm comunicação periódica com infraestrutura remota, fazem reconhecimento inicial do sistema e aguardam comandos. As capacidades descritas incluem enumeração de diretórios e metadados de arquivos, listagem de processos, execução de comandos, execução de payloads adicionais, carregamento de DLL em memória na variante Windows e encerramento controlado do próprio malware. O intervalo de beacon citado é de 60 segundos. No Windows há mecanismo de persistência por arquivo em %PROGRAMDATA% e chave de execução automática no Registro; nas variantes macOS e Linux, o contexto não confirma persistência nativa após reinicialização.
A exposição principal recai sobre ambientes que instalaram axios@1.14.1 ou axios@0.30.4 a partir do npm enquanto as versões maliciosas estavam disponíveis. Como Axios possui grande presença em projetos frontend, backends Node.js, ferramentas internas, automações, imagens de build e dependências transitivas, a análise não deve se limitar a aplicações em produção. Estáções de desenvolvedores, runners de CI/CD, caches de pacotes, imagens de contêiner, diretórios node_modules versionados e pipelines que executam instalação limpa podem ter acionado o script de pós-instalação.
O caso é mais sensível em máquinas com segredos acessíveis durante a instalação. Tokens npm, credenciais de nuvem, chaves SSH, variáveis de ambiente de CI/CD, arquivos de configuração local, cookies de navegador, credenciais de repositório e segredos de implantação podem estar ao alcance de um RAT com execução no contexto do usuário ou do processo de build. O material analisado não confirma quais dados foram exfiltrados, portanto a avaliação correta é assumir comprometimento de hosts com artefatos do RAT e rotacionar credenciais acessíveis nesses ambientes.
- Projetos que resolveram
axiospara1.14.1ou0.30.4durante a janela de exposição. - Ambientes com
plain-crypto-js@4.2.1presente emnode_modules, lockfiles, caches npm ou artefatos de build. - Pacotes citados com dependência vendorizada, incluindo
@shadanai/openclawnas versões2026.3.28-2,2026.3.28-3,2026.3.31-1e2026.3.31-2, além de@qqbrowser/openclaw-qbot@0.0.130.
A investigação deve começar pela resolução de dependências e pelo histórico de instalação. Em repositórios, procure lockfiles que apontem para axios@1.14.1, axios@0.30.4 ou plain-crypto-js@4.2.1. Em endpoints e runners, valide a presença de plain-crypto-js dentro de node_modules, especialmente quando a dependência aparecer associada a Axios sem justificativa funcional. O Axios legítimo citado no contexto possui dependências como follow-redirects, form-data e proxy-from-env; a inclusão de plain-crypto-js nesse pacote é um sinal de adulteração.
Nos hosts, a telemetria deve correlacionar instalação npm com criação de arquivos em caminhos incomuns, execução de interpretadores de script e comunicação externa. Em macOS, o artefato /Library/Caches/com.apple.act.mond é relevante. Em Windows, %PROGRAMDATA%\wt.exe, %PROGRAMDATA%\system.bat e uma chave de execução automática apontando para o lote citado merecem triagem. Em Linux, /tmp/ld.py é o artefato informado. A comunicação com sfrclak[.]com e com caminhos defangados associados a packages[.]npm[.]org/product0, product1 e product2 deve ser tratada como sinal de alto risco quando observada após instalação de dependências JavaScript.
A limpeza forense executada pelo próprio malware dificulta inspeções tardias. Após iniciar o payload principal, a cadeia remove o gancho de pós-instalação, apaga o manifesto que referencia o hook e substitui o arquivo package.json por um manifesto limpo armazenado como package.md. Isso significa que a ausência do hook no momento da análise não elimina comprometimento. A linha do tempo de criação e alteração de arquivos, registros de proxy, EDR, auditoria de processo e cache do gerenciador de pacotes podem preservar evidências que já não aparecem no diretório final do pacote.
- Lockfiles ou caches contendo
axios@1.14.1,axios@0.30.4ouplain-crypto-js@4.2.1. - Criação de
/Library/Caches/com.apple.act.mond,%PROGRAMDATA%\wt.exe,%PROGRAMDATA%\system.batou/tmp/ld.pylogo após instalação npm. - Beacons periódicos para domínio C2 defangado
sfrclak[.]comou requisições para caminhos defangadospackages[.]npm[.]org/product0,product1eproduct2. - Alteração de
package.jsondentro deplain-crypto-js, presença depackage.mde inconsistência entre dependências esperadas e dependências instaladas.
A resposta deve priorizar contenção de hosts que instalaram as versões afetadas. Projetos devem fixar Axios em versões não afetadas, como 1.14.0 ou 0.30.3, e remover plain-crypto-js@4.2.1 de árvores de dependência, caches e imagens. Como as versões maliciosas e o pacote falso deixaram de estar disponíveis para download, a mitigação não deve se limitar a novas instalações; o risco permanece em ambientes que já resolveram e armazenaram os artefatos.
Quando os artefatos do RAT forem encontrados, o host deve ser tratado como comprometido. A rotação deve incluir segredos acessíveis ao usuário, ao processo de build e ao ambiente de execução: tokens npm, chaves de repositório, credenciais de nuvem, variáveis de CI/CD, chaves SSH e credenciais de implantação. Também é necessário revisar logs de publicação npm, alterações de e-mail de contas de mantenedores, tokens clássicos de longa duração e permissões de publicação. O uso de tokens com escopo mínimo, expiração curta e proteção por autenticação forte reduz o impacto de comprometimentos semelhantes.
No nível de engenharia, pipelines devem bloquear instalação de pacotes com scripts de ciclo de vida quando isso não for necessário, validar diferenças de dependências em releases e alertar quando um pacote amplamente usado adiciona uma dependência inesperada. Ambientes de build com acesso a segredos devem ser segmentados, efêmeros e monitorados. A defesa também deve aplicar allowlists ou políticas de egress para impedir que processos de instalação alcancem infraestrutura externa não autorizada.
- Reverter Axios para
1.14.0ou0.30.3e reconstruir artefatos a partir de dependências limpas. - Procurar e remover
plain-crypto-js@4.2.1emnode_modules, caches, imagens e pacotes vendorizados. - Bloquear tráfego de saída para
sfrclak[.]come investigar requisições aos caminhos C2 defangados citados. - Rotacionar credenciais de hosts com sinais do RAT ou instalação confirmada das versões afetadas.
- Revisar contas npm de mantenedores, tokens clássicos de longa duração, alterações de e-mail e permissões de publicação.
0 Comentários