Como o Ataque à Cadeia de Suprimentos do NPM Axios Acontece (E Como Proteger Seus Projetos de API)

Ashley Innocent

Ashley Innocent

1 abril 2026

Como o Ataque à Cadeia de Suprimentos do NPM Axios Acontece (E Como Proteger Seus Projetos de API)

TL;DR

Em 31 de março de 2026, invasores comprometeram a conta npm do mantenedor principal do Axios, o cliente HTTP JavaScript mais popular com 83 milhões de downloads semanais. Eles publicaram versões maliciosas (1.14.1 e 0.30.4) contendo um RAT (Cavalo de Troia de Acesso Remoto) multiplataforma que rouba credenciais, chaves SSH e tokens de nuvem de máquinas de desenvolvedores. Faça downgrade para o Axios 1.14.0 imediatamente, rotacione todos os segredos e escaneie seu sistema em busca de indicadores de comprometimento.

Introdução

Axios processa mais requisições HTTP do que qualquer outra biblioteca JavaScript. Se você construiu um cliente de API, testou endpoints ou conectou um frontend a um backend nos últimos cinco anos, provavelmente o utilizou.

Em 31 de março de 2026, às 00:21 UTC, um ator de ameaças publicou a versão 1.14.1 do Axios através de uma conta de mantenedor sequestrada. O pacote parecia idêntico ao lançamento legítimo. A diferença foi cirúrgica: apenas o package.json mudou entre 86 arquivos. Mas esse único arquivo injetou uma dependência fantasma chamada plain-crypto-js que implantou um trojan de acesso remoto em toda máquina que executou npm install.

As versões maliciosas permaneceram ativas por aproximadamente duas a três horas antes que o npm as retirasse. Duas a três horas em meio a 83 milhões de downloads semanais.

💡
Se você está construindo ou testando APIs, este ataque mirou diretamente sua cadeia de ferramentas. O cliente HTTP embutido do Apidog elimina a necessidade de bibliotecas HTTP de terceiros em seu fluxo de trabalho de teste de API, removendo toda essa superfície de ataque. Baixe o Apidog gratuitamente para acompanhar as etapas de auditoria de segurança abaixo.
button

Este artigo detalha como o ataque funcionou, como detectar se seus sistemas foram comprometidos e o que as equipes de API devem mudar em relação à sua gestão de dependências daqui para frente.

Como o ataque à cadeia de suprimentos do Axios se desenrolou

A linha do tempo

O atacante executou esta operação com precisão em um período de 18 horas:

Como a conta foi comprometida

O atacante assumiu o controle da conta npm jasonsaayman, o principal mantenedor do Axios. Eles mudaram o e-mail registrado para ifstap@proton.me. A principal evidência forense:

Essa distinção é importante. Se sua organização publica pacotes npm, a ausência de ligação OIDC e proveniência de CI/CD em um lançamento é um sinal de alerta que vale a pena automatizar verificações.

A técnica de injeção de dependência

Eis o que tornou este ataque sutil. O atacante não modificou o código-fonte do Axios. Eles mudaram uma linha em package.json para adicionar plain-crypto-js@^4.2.1 como uma dependência em tempo de execução. Este pacote nunca foi importado em nenhum lugar da base de código do Axios. Ele existia apenas para acionar seu hook postinstall durante o npm install.

A análise binária confirmou a precisão cirúrgica: apenas o package.json diferia entre o lançamento limpo 1.14.0 e o comprometido 1.14.1 em todos os 86 arquivos do pacote.

O que o payload malicioso faz

O mecanismo do dropper

O hook postinstall em plain-crypto-js executou um arquivo ofuscado de 4.2 KB chamado setup.js. Ele usou duas camadas de ofuscação:

  1. Camada 1: Cifra XOR usando uma chave derivada da string "OrDeR_7077"
  2. Camada 2: Codificação Base64 com reversão de caracteres

Uma vez decodificado, o dropper identificou o sistema operacional do host e executou payloads específicos da plataforma.

Caminhos de ataque específicos da plataforma

macOS:

Escreve AppleScript em /tmp/6202033
Executa via osascript
Baixa o payload para /Library/Caches/com.apple.act.mond

Windows:

Copia PowerShell para %PROGRAMDATA%\wt.exe (artefato de persistência)
Executa o dropper VBScript via cscript

Linux:

Baixa o RAT Python para /tmp/ld.py
Executa via nohup python3

Todos os três ramos contataram um servidor de comando e controle com corpos POST específicos da plataforma:

Capacidades do RAT

O trojan de acesso remoto implantado suporta:

Em termos simples: o atacante obtém controle remoto total de sua máquina de desenvolvimento. Eles podem ler seus arquivos .env, roubar suas chaves de API, copiar suas chaves SSH e coletar tokens de provedores de nuvem.

Anti-forense: o payload autolimpante

Após a execução, o dropper realizou três etapas de limpeza:

  1. Excluiu o próprio setup.js
  2. Excluiu o package.json malicioso
  3. Renomeou um package.md pré-configurado (relatando a versão 4.2.0) para package.json

Isso criou uma camada de engano onde npm list relataria a versão 4.2.0 em vez da 4.2.1 que executou o payload. Um desenvolvedor verificando suas dependências depois não veria nada de errado.

Quem está por trás deste ataque

O Google Threat Intelligence Group atribuiu o ataque ao Axios ao UNC1069, um ator de ameaças suspeito da Coreia do Norte. O malware para macOS exibe "sobreposição significativa" com WAVESHAPER, um backdoor C++ que a Mandiant rastreou em fevereiro de 2026.

Grupos norte-coreanos patrocinados pelo Estado têm vasta experiência com ataques à cadeia de suprimentos. Historicamente, eles usaram ferramentas de desenvolvimento comprometidas para roubar criptomoedas, e esta operação segue o mesmo manual: comprometer uma ferramenta de desenvolvimento amplamente utilizada para obter acesso a credenciais e infraestrutura de nuvem em milhares de organizações.

O nível de sofisticação é notável. A injeção de dependência em dois estágios, a implantação de RAT multiplataforma e a limpeza anti-forense apontam para uma operação bem-recursos. Não é um script kiddie lançando um cryptominer. É uma operação de inteligência visando estações de trabalho de desenvolvedores.

Como verificar se você foi afetado

Passo 1: Verifique sua versão do Axios

Execute isso em cada projeto que usa Axios:

npm list axios 2>/dev/null | grep -E "1\.14\.1|0\.30\.4"

Se isso retornar resultados, seu projeto instalou uma versão comprometida.

Passo 2: Verifique a dependência maliciosa

ls node_modules/plain-crypto-js 2>/dev/null && echo "POTENCIALMENTE AFETADO"

Mesmo que o dropper tenha se limpado, a existência do diretório confirma que o payload foi executado.

Passo 3: Verifique artefatos do RAT em seu sistema

macOS:

ls -la /Library/Caches/com.apple.act.mond 2>/dev/null

Linux:

ls -la /tmp/ld.py 2>/dev/null

Windows (PowerShell):

Test-Path "$env:PROGRAMDATA\wt.exe"

Passo 4: Verifique indicadores de rede

Bloqueie e escaneie por conexões para:

Passo 5: Verifique logs de build de CI/CD

Revise quaisquer execuções de pipeline de CI/CD entre 31 de março 00:21 UTC e 03:15 UTC. Qualquer execução de npm install ou npm ci durante esta janela que resolveu Axios pode ter executado o dropper em seu ambiente de build.

Etapas de remediação imediata

Se você encontrar quaisquer indicadores de comprometimento, trate o sistema afetado como totalmente comprometido. Aqui está a lista de prioridades:

1. Faça downgrade do Axios imediatamente

npm install axios@1.14.0

Ou para o branch 0.x:

npm install axios@0.30.3

2. Adicione substituições de versão ao seu package.json

Evite a resolução transitiva para versões maliciosas:

{
  "overrides": {
    "axios": "1.14.0"
  }
}

Para Yarn:

{
  "resolutions": {
    "axios": "1.14.0"
  }
}

3. Remova o pacote malicioso

rm -rf node_modules/plain-crypto-js

4. Rotacione todas as credenciais

Se o dropper executou em sua máquina, assuma que os seguintes foram comprometidos:

Rotacione tudo. Não há como saber o que o RAT exfiltrou durante sua janela ativa.

5. Bloqueie C2 no nível da rede

Adicione ao seu arquivo hosts ou regras de firewall:

echo "0.0.0.0 sfrclak.com" | sudo tee -a /etc/hosts

6. Se artefatos forem encontrados, reconstrua a máquina

Um RAT com execução de shell e acesso ao sistema de arquivos pode modificar qualquer coisa. Se você encontrou artefatos do Passo 3, não confie no sistema. Reconstrua a partir de um estado conhecido como bom.

Defesas de longo prazo para equipes de desenvolvimento de API

Use lockfiles e fixe versões exatas

O ataque ao Axios explorou faixas semânticas (semver) com ^. Se seu package.json diz "axios": "^1.14.0", o npm resolve para a versão compatível mais recente, que era 1.14.1 durante a janela de ataque.

{
  "dependencies": {
    "axios": "1.14.0"
  }
}

Fixe versões exatas. Sempre commit o seu package-lock.json ou yarn.lock. Execute npm ci em vez de npm install no CI/CD para impor a resolução do lockfile.

Desative scripts postinstall no CI/CD

Todo o ataque dependeu da execução de hooks postinstall durante o npm install. Você pode desabilitar isso:

npm ci --ignore-scripts

Isso quebra alguns pacotes que precisam de compilação nativa. Teste suas compilações primeiro e, em seguida, permita seletivamente scripts para pacotes que os necessitam usando .npmrc:

ignore-scripts=true

Audite dependências regularmente

npm audit
npx socket-security/cli audit

Execute-os no CI/CD como um gate. Qualquer vulnerabilidade crítica ou alta deve bloquear a compilação.

Reduza sua superfície de dependência do cliente HTTP

Aqui está a questão mais profunda que este ataque levanta: por que seu fluxo de trabalho de teste de API depende de uma biblioteca HTTP de terceiros que pode ser comprometida?

O Apidog oferece um cliente HTTP integrado para teste, depuração e documentação de API. Você não precisa de Axios, node-fetch ou got em sua pilha de testes. O cliente HTTP faz parte da plataforma, sem dependências de terceiros para comprometer.

Para testes de API especificamente, mover suas requisições HTTP para o Apidog elimina toda a superfície de ataque:

Experimente o Apidog gratuitamente para ver como remover dependências de bibliotecas HTTP do seu fluxo de trabalho de API reduz seu risco na cadeia de suprimentos.

Verifique a proveniência do pacote

O npm agora suporta a proveniência de pacotes através do Sigstore. Verifique se os pacotes dos quais você depende usam isso:

npm audit signatures

As versões maliciosas do Axios não tinham proveniência OIDC. Lançamentos legítimos de pipelines de CI/CD incluem atestado criptográfico de sua origem de build. Se uma nova versão aparecer sem proveniência, trate-a com desconfiança.

O que isso significa para o ecossistema JavaScript

O modelo de confiança está quebrado

O modelo de confiança do npm depende da segurança da conta do mantenedor. Uma única credencial comprometida dá a um atacante controle sobre um pacote que 83 milhões de projetos instalam semanalmente. A autenticação de dois fatores ajuda, mas tokens de acesso de longa duração ainda podem ser roubados de ambientes de desenvolvimento comprometidos.

A comunidade está discutindo várias mudanças estruturais:

Ataques à cadeia de suprimentos não estão diminuindo

Este ataque ocorreu dias após o incidente de fratura do RubyGems e as contínuas preocupações com dependências do PyPI. Registros de pacotes em todos os ecossistemas de linguagem estão sob ataque contínuo. Desenvolvedores de API precisam pensar em sua árvore de dependências como uma superfície de ataque, não como uma conveniência.

A discussão no Reddit capturou bem o sentimento: "NPM é a maior fraqueza da internet hoje e ainda causará uma catástrofe gigante." Concordando ou não com a hipérbole, o ataque ao Axios demonstra que o raio de explosão é real.

Comparação: Abordagens de dependência do cliente HTTP

Abordagem Risco da cadeia de suprimentos Carga de manutenção Capacidade de teste
Axios + scripts personalizados Alto (dependência de terceiros) Alto (gestão de versões) Configuração manual necessária
Fetch nativo do Node.js Baixo (embutido no runtime) Baixo Recursos de teste limitados
Cliente integrado do Apidog Nenhum (sem dependência npm) Nenhum (gerenciado pela plataforma) Teste completo, mocking, docs
Scripts curl/httpie Baixo (ferramenta de nível de sistema) Médio Automação limitada

FAQ

O Axios é seguro para usar agora?

Sim. As versões 1.14.0 e 0.30.3 estão limpas. As versões comprometidas (1.14.1 e 0.30.4) foram retiradas em aproximadamente três horas. Verifique sua versão instalada com npm list axios e confira seu lockfile para confirmar que você está em uma versão segura.

Como sei se o RAT rodou na minha máquina?

Verifique artefatos específicos da plataforma: /Library/Caches/com.apple.act.mond no macOS, /tmp/ld.py no Linux, ou %PROGRAMDATA%\wt.exe no Windows. Verifique também se node_modules/plain-crypto-js existe em algum dos seus projetos. O dropper se limpa, então a ausência de artefatos não garante que você esteja seguro se instalou a versão comprometida.

Devo parar de usar o Axios completamente?

Não necessariamente. O Axios continua sendo uma biblioteca bem mantida com um histórico sólido. Mas este ataque deve levá-lo a avaliar se você realmente precisa de um cliente HTTP de terceiros. O Node.js 18+ inclui o fetch nativo. Para testes de API, plataformas como Apidog fornecem clientes HTTP integrados que eliminam essa dependência.

Como posso prevenir ataques à cadeia de suprimentos em meus projetos?

Fixe versões exatas de dependências, commit lockfiles, execute npm ci --ignore-scripts no CI/CD, audite dependências regularmente, verifique a proveniência de pacotes com npm audit signatures e minimize sua árvore de dependências. Considere mover fluxos de trabalho de teste de API para plataformas integradas que não dependam de pacotes npm para comunicação HTTP.

Este ataque foi relacionado ao vazamento do código-fonte do Claude Code?

Ambos os eventos aconteceram no mesmo dia (31 de março de 2026), mas não estão relacionados. O ataque ao Axios foi um comprometimento deliberado da cadeia de suprimentos por um ator de ameaças patrocinado pelo Estado. O vazamento do Claude Code resultou de um bug da ferramenta de build Bun que enviou mapas de origem em produção. A coincidência no tempo alimentou a discussão sobre a segurança geral do registro npm.

Quem estava por trás do ataque ao Axios?

O Google Threat Intelligence Group atribuiu o ataque ao UNC1069, um ator de ameaças suspeito da Coreia do Norte. O malware para macOS compartilha uma sobreposição significativa com WAVESHAPER, um backdoor rastreado pela Mandiant. Grupos norte-coreanos têm vasta experiência em ataques à cadeia de suprimentos, tipicamente visando credenciais de desenvolvedores e infraestrutura de criptomoedas.

Quantos desenvolvedores foram afetados?

As versões maliciosas ficaram ativas por aproximadamente duas a três horas. Com 83 milhões de downloads semanais, a exposição potencial é significativa. O npm não publicou números oficiais de impacto. A detecção em tempo de execução da StepSecurity confirmou que o dropper contatou o C2 em 1.1 segundos após o início do npm install, antes que a resolução das dependências fosse concluída.

O Apidog pode ajudar a prevenir ataques à cadeia de suprimentos?

O Apidog elimina um grande vetor de ataque ao fornecer um cliente HTTP integrado para teste, depuração e documentação de API. Você não precisa instalar Axios, node-fetch ou outras bibliotecas HTTP em seu fluxo de trabalho de teste. Isso reduz sua superfície de dependência npm e remove o risco de pacotes de cliente HTTP comprometidos afetarem seu processo de desenvolvimento de API.

Principais conclusões

O ataque ao Axios é um alerta. Cada dependência em seu node_modules é uma decisão de confiança. Certifique-se de que você está tomando essas decisões deliberadamente, não por padrão.

button

Pratique o design de API no Apidog

Descubra uma forma mais fácil de construir e usar APIs