Aikido

Axios CVE-2026-40175: uma falha crítica que… não é explorável

Escrito por
Mackenzie Jackson

Foram semanas caóticas para a Axios.

Primeiro, um ataque de grande envergadura à cadeia de abastecimento colocou o pacote sob escrutínio. Depois, poucos dias mais tarde, começaram a surgir notícias sobre uma «vulnerabilidade crítica de nível 10/10» que poderia levar ao comprometimento total da nuvem.

Se leu as notícias, provavelmente já viu afirmações como:

  • «Os atacantes podem roubar credenciais da AWS»
  • «Contornar o IMDSv2»
  • «cadeia de execução remota de código»

Isso não me parece nada bom.

Mas quando se analisa de perto como esta vulnerabilidade se comporta realmente 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 investigador que comunicou a falha, uma coisa fica clara:

Em ambientes Node.js padrão, esta vulnerabilidade não é, na prática, explorável. 

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

Isso não significa que a vulnerabilidade CVE esteja errada. O problema subjacente identificado pela Axios é real, e corrigi-lo foi a decisão certa. Mas a ideia de que isso leva a um comprometimento fácil da nuvem em ambiente de produção não se sustenta quando analisada com rigor. Na prática, a exploração exigiria condições muito específicas, como um adaptador personalizado que contorne a validação de cabeçalhos do Node.js.

O que afirma o CVE

A CVE-2026-40175 é descrita como uma vulnerabilidade do tipo «cadeia de gadgets»:

  1. Poluição de protótipos numa dependência
  2. A Axios deteta valores contaminados
  3. Injeção de cabeçalho CRLF
  4. Contrabando de pedidos / SSRF
  5. Contornar o IMDSv2 da AWS
  6. Roubo de credenciais → violação da nuvem

Em teoria, é assim:

// Poluição de protótipos noutro local
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");

O Axios mescla a configuração → recolhe cabeçalhos contaminados → envia um pedido malicioso.

É essa a teoria.

O que realmente acontece no Node.js

O problema é que esta cadeia falha em ambientes reais.

O Axios utiliza o cliente HTTP integrado do Node.js nos bastidores:

http.request(...)

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

Se tentares:

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

Receberá:

TypeError [ERR_INVALID_CHAR]: Caractere inválido no conteúdo do cabeçalho

Isso acontece antes de qualquer pedido ser enviado.

Portanto, a primitiva central da qual a exploração depende — a injeção de cabeçalhos CRLF — já está bloqueada ao nível da execução.

Confirmámos isso com o investigador

Para confirmar esta informação, falámos diretamente com o investigador que comunicou a vulnerabilidade, Raul Vega Del Valle.

A sua conclusão coincide com o que observámos:

  • O Node.js bloqueia a injeção de cabeçalhos CRLF
  • O mesmo comportamento ocorre no Bun e no Deno
  • Consequentemente, a cadeia de ataque não é realisticamente exequível em ambientes padrão

Nas palavras de Raul:

«Numa aplicação real… isso não deveria acontecer… O Node, o Bun ou o Deno simplesmente bloqueiam o CRLF.»

Ele também confirmou que:

«Isso não deveria ser possível em aplicações de produção reais.» 

Essa é uma nuance fundamental que falta na maioria das reportagens.

Por que é que o CVE ainda existe?

Então, se não é explorável na prática, por que razão isto é um CVE?

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

Anteriormente, o Axios permitia valores de cabeçalho não seguros. Mesmo que o tempo de execução os bloqueasse, a própria biblioteca não impunha essa restrição.

Como explicou o investigador:

«É verdade no nível da biblioteca, embora não o seja no nível do intérprete», afirma Raul Vega Del Valle

Há também um caso específico que vale a pena mencionar, para completar. O Axios permite aos programadores substituir a forma como os pedidos são enviados utilizando um adaptador personalizado. Em vez de depender do http.request integrado no Node, um adaptador personalizado pode construir e enviar manualmente pedidos HTTP.

Em teoria, se uma aplicação:

  • utiliza um adaptador Axios personalizado
  • ignora completamente o cliente HTTP do Node
  • e escreve pedidos em formato bruto diretamente nos sockets

nesse caso, a validação do cabeçalho também poderia ser contornada. Nesse cenário, a injeção de CRLF poderia voltar a ser possível.

Dito isto, tal requer uma utilização não padrão e a desativação deliberada das proteções integradas. Não se aplica a aplicações típicas do Node.js que utilizam o Axios tal como vem de fábrica.

E quanto ao desvio do IMDSv2?

Esta é a parte da história que mais tem dado que falar e a menos fundamentada na realidade.

Sim, o aviso apresenta um pedido do tipo:

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:

  • poluição protótipo
  • Injeção de CRLF
  • contrabando de pedidos
  • sem validação em tempo de execução

No Node.js, essa cadeia é interrompida prematuramente.

O próprio investigador observou que , nesta configuração, não é realisticamente possível contornar o IMDSv2, embora tenha referido que o IMDSv1 poderia merecer uma investigação mais aprofundada.

Por que razão isto foi classificado como crítico

A classificação «10/10» deve-se ao potencial de encadeamento no pior cenário possível, e não à facilidade típica de exploração.

Se partirmos do princípio de que:

  • é possível que o protótipo cause poluição
  • os cabeçalhos podem ser inseridos
  • os serviços internos estão acessíveis
  • os pontos de extremidade de metadados estão disponíveis

Nesse caso, sim, o impacto poderá ser grave.

Mas isso são muitas suposições acumuladas.

O que os programadores devem realmente fazer

Não é uma situação em que se deva «largar tudo», mas também não é algo que se deva ignorar.

Deve:

  • Atualize para o Axios ≥ 1.15.0
  • Verifique as suas dependências quanto a riscos de contaminação de protótipos
  • Analisar a exposição a SSRF e o acesso à rede
  • Evite depender exclusivamente de proteções em tempo de execução

Concentre-se na verdadeira superfície de ataque, e não apenas nas manchetes sobre o CVE.

Compartilhar:

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

Comece hoje, gratuitamente.

Comece Gratuitamente
Não é necessário cc

Assine para receber notícias sobre ameaças.

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.