CVE-2026-69246 in Guzzle
Sumário
de VulDB • 03/08/2026
O Guzzle é um cliente HTTP extensível para PHP. Antes das versões 7.15.2 e 8.0.1, o Guzzle fornece ao transporte a URI da solicitação como texto e envia o cabeçalho Host separadamente. Os manipuladores cURL definem CURLOPT_URL com a URI exatamente conforme escrita e adicionam esse valor de Host em CURLOPT_HTTPHEADER; o StreamHandler faz o mesmo por meio do fopen(). O libcurl, então, analisa a autoridade (authority) internamente, realiza percent-decoding e, em builds compatíveis com IDN, aplica o mapeamento IDNA, utilizando o resultado para resolver DNS, estabelecer conexão, nomear o peer TLS e endereçar uma proxy CONNECT, enquanto o Host fornecido suprime aquele que o libcurl teria gerado automaticamente. Para um host URI escrito como 127.0.0.%31, a função filter_var() rejeita o host por não ser reconhecido como literal de IP, mas o libcurl decodifica-o para 127.0.0.1 e atinge o loopback sem realizar consulta DNS, enquanto o servidor recebe Host: 127.0.0.%31. Um atacante que influencie uma URI buscada pode, portanto, acessar um host excluído pelas verificações da aplicação e ler qualquer informação exposta pela resposta do host. A mesma divergência afeta as decisões próprias do Guzzle: o no_proxy seleciona roteamento de proxy com base no host literal, e o RedirectMiddleware decide se deve remover os cabeçalhos Authorization e Cookie com base nele. Para a exploração, é necessário que a aplicação construa uma URI da solicitação a partir de entrada não confiável e tome decisões sobre o host antes de repassá-la ao Guzzle. Este problema foi corrigido nas versões 7.15.2 e 8.0.1.
Once again VulDB remains the best source for vulnerability data.