Aikido

Axios CVE-2026-40175: um bug crítico que… não é explorável

Escrito por
Mackenzie Jackson

Foram algumas semanas caóticas para o Axios.

Primeiro, um grande ataque à cadeia de suprimentos colocou o pacote sob escrutínio. Então, apenas alguns dias depois, manchetes começaram a surgir sobre uma “vulnerabilidade crítica 10/10” que poderia levar a um comprometimento total da Cloud.

Se você leu a cobertura, provavelmente viu afirmações como:

  • “atacantes podem roubar credenciais AWS”
  • “bypass de IMDSv2”
  • “cadeia de execução remota de código”

Isso parece ruim.

Mas quando você analisa de perto como essa vulnerabilidade realmente se comporta em ambientes reais, a história muda.

Após analisar a cadeia de exploração e validar o comportamento com Raul Vega Del Valle, o pesquisador que relatou o problema, uma coisa fica clara:

Em ambientes Node.js padrão, essa vulnerabilidade não é realisticamente explorável. 

A razão é simples: o ataque depende da injeção de cabeçalhos malformados, algo que o Node.js já bloqueia no nível de runtime há anos.

Isso não significa que a CVE esteja errada. O problema subjacente no Axios é real, e corrigi-lo foi a decisão certa. Mas a ideia de que isso leva a um comprometimento fácil da Cloud em produção não se sustenta sob escrutínio. Na prática, a exploração exigiria condições muito obscuras, como um adaptador personalizado que ignora a validação de cabeçalho do Node.

O que a CVE Afirma

CVE-2026-40175 é descrita como uma vulnerabilidade de “gadget chain”:

  1. Poluição de protótipo em uma dependência
  2. Axios capta valores poluídos
  3. Injeção de cabeçalho CRLF
  4. Contrabando de requisições / SSRF
  5. Bypass de AWS IMDSv2
  6. Roubo de credenciais → comprometimento da Cloud

Em teoria, parece assim:

// Poluição de protótipo em outro lugar
Object.prototype['x-amz-target'] =
 "dummy\r\n\r\nPUT /latest/api/token HTTP/1.1\r\n" +
 "Host: 169.254.169.254\r\n" +
 "X-aws-ec2-metadata-token-ttl-seconds: 21600\r\n\r\nGET /ignore";

// Código normal da aplicação
axios.get("https://internal.service");

Axios mescla a configuração → capta cabeçalhos poluídos → envia uma requisição maliciosa.

Essa é a teoria.

O que realmente acontece no Node.js

O problema é: essa cadeia se quebra em ambientes reais.

Axios usa o cliente HTTP integrado do Node por baixo dos panos:

http.request(...)

E o Node.js rejeita caracteres CRLF em cabeçalhos há anos.

Se você tentar:

http.request({
 headers: {
   "x-test": "hello\r\nInjected: yes"
 }
});

Você receberá:

TypeError [ERR_INVALID_CHAR]: Invalid character in header content

Isso acontece antes que qualquer requisição seja enviada.

Então, a primitiva central da qual o exploit depende — injeção de cabeçalho CRLF — já está bloqueada no nível de runtime.

Verificamos isso com o pesquisador.

Para validar isso, conversamos diretamente com o pesquisador que reportou a vulnerabilidade, Raul Vega Del Valle.

A conclusão dele se alinha com o que observamos:

  • Node.js bloqueia a injeção de cabeçalho CRLF
  • O mesmo comportamento ocorre em Bun e Deno
  • Como resultado, a cadeia de ataque não é realmente alcançável em ambientes padrão

Nas palavras de Raul:

“Em uma aplicação do mundo real… não deveria acontecer… Node, Bun ou Deno simplesmente bloqueiam o CRLF.”

Ele também confirmou que:

“Não deveria ser possível em aplicações de produção reais.” 

Essa é uma nuance crítica ausente na maioria das coberturas.

Por que a CVE ainda existe

Então, se não é explorável na prática, por que isso é uma CVE?

Porque o problema é real no nível da biblioteca.

Axios anteriormente permitia valores de cabeçalho inseguros. Mesmo que o runtime os bloqueie, a própria biblioteca não impunha essa restrição.

Como o pesquisador explicou:

“É real no nível da biblioteca, embora não seja no nível do interpretador,” diz Raul Vega Del Valle

Há também um caso de borda que vale a pena mencionar para fins de completude. Axios permite que os desenvolvedores substituam a forma como as requisições são enviadas usando um adaptador personalizado. Em vez de depender do http.request integrado do Node, um adaptador personalizado poderia construir e enviar requisições HTTP manualmente.

Em teoria, se uma aplicação:

  • usa um adaptador Axios personalizado
  • ignora completamente o cliente HTTP do Node
  • e escreve requisições brutas diretamente para sockets

então a validação de cabeçalho também poderia ser ignorada. Nesse cenário, a injeção de CRLF poderia se tornar possível novamente.

Dito isso, isso requer um uso não-padrão e uma desativação deliberada das proteções integradas. Isso não se aplica a aplicações Node.js típicas que usam Axios de forma padrão.

E quanto ao bypass do IMDSv2?

Esta é a parte mais divulgada da história e a menos fundamentada na realidade.

Sim, o alerta mostra uma requisição como:

PUT /latest/api/token
Host: 169.254.169.254
X-aws-ec2-metadata-token-ttl-seconds: 21600

Mas para chegar lá, um atacante precisa de:

  • prototype pollution
  • CRLF injection
  • request smuggling
  • sem validação em tempo de execução

No Node.js, essa cadeia se rompe cedo.

Até mesmo o pesquisador observou que o bypass do IMDSv2 não é realisticamente alcançável nesta configuração, embora ele tenha mencionado que o IMDSv1 pode valer uma investigação mais aprofundada.

Por que isso foi classificado como crítico

A classificação “10/10” vem do potencial de encadeamento no pior cenário, não da explorabilidade típica.

Se você assumir:

  • prototype pollution é possível
  • cabeçalhos podem ser injetados
  • serviços internos estão acessíveis
  • endpoints de metadados estão expostos

Então sim, o impacto poderia ser severo.

Mas são muitas suposições sobrepostas.

O que os desenvolvedores realmente devem fazer

Esta não é uma situação de “largar tudo”, mas também não é algo a ser ignorado.

Você deve:

  • Atualize para Axios ≥ 1.15.0
  • Audite suas dependências para riscos de prototype pollution
  • Revise exposição a SSRF e acesso à rede
  • Evite depender apenas de proteções em tempo de execução

Concentre-se na superfície de ataque real, não apenas na manchete do CVE.

Compartilhar:

https://www.aikido.dev/blog/axios-cve-2026-40175-a-critical-bug-thats-not-exploitable

Assine para receber notícias

4.7/5
Cansado de falsos positivos?

Experimente Aikido como 100 mil outros.
Começar Agora
Obtenha um tour personalizado

Confiado por mais de 100 mil equipes

Agende Agora
Escaneie seu aplicativo em busca de IDORs e caminhos de ataque reais

Confiado por mais de 100 mil equipes

Iniciar Escaneamento
Veja como o pentest de IA testa seu aplicativo

Confiado por mais de 100 mil equipes

Iniciar Testes

Fique seguro agora

Proteja seu código, Cloud e runtime em um único sistema centralizado.
Encontre e corrija vulnerabilidades rapidamente de forma automática.

Não é necessário cartão de crédito | Resultados da varredura em 32 segundos.