Prior to 7.15.2 and 8.0.1, Guzzle gives a transport the request URI as text and supplies the Host header separately. (CVE-2026-69246)
Guzzle versions prior to 7.15.2 and 8.0.1 have a vulnerability where the request URI is passed as text to the transport layer while the Host header is supplied separately. This causes libcurl to decode and resolve the URI host differently than the application expects, potentially allowing an attacker who controls the URI to bypass host checks and access unintended hosts. The issue is fixed in versions 7.15.2 and 8.0.1.
AI Analysis
Technical Summary
Guzzle, a PHP HTTP client, prior to versions 7.15.2 and 8.0.1, passes the request URI as text to the transport and supplies the Host header separately. The cURL handlers set CURLOPT_URL to the literal URI and push the Host header into CURLOPT_HTTPHEADER. libcurl then parses and decodes the URI host, including percent-decoding and IDNA mapping, to resolve and connect to the target host. This can cause divergence between the host used by libcurl and the Host header sent to the server. For example, a URI host like 127.0.0.%31 is rejected by PHP's filter_var() as an IP literal but decoded by libcurl to 127.0.0.1, allowing connection to loopback while the Host header remains 127.0.0.%31. An attacker controlling the URI can exploit this to reach hosts excluded by application checks and read responses. This also affects proxy routing and redirect decisions based on the literal host. Exploitation requires the application to build request URIs from untrusted input and make host decisions before passing to Guzzle. The vulnerability is fixed in versions 7.15.2 and 8.0.1.
Potential Impact
An attacker who can influence the URI used in a Guzzle request may bypass host-based access controls by exploiting the difference between the URI host as interpreted by libcurl and the Host header sent to the server. This can lead to unauthorized access to internal or excluded hosts and disclosure of response data. The vulnerability also affects proxy routing and authorization header stripping behavior, potentially impacting security decisions. There is no indication of denial of service or code execution impact.
Mitigation Recommendations
Upgrade Guzzle to version 7.15.2 or later, or 8.0.1 or later, where this issue is fixed. If upgrading is not immediately possible, avoid building request URIs from untrusted input or performing host-based access control decisions before passing URIs to Guzzle. Patch status is confirmed fixed in the specified versions.
Prior to 7.15.2 and 8.0.1, Guzzle gives a transport the request URI as text and supplies the Host header separately. (CVE-2026-69246)
Description
Guzzle versions prior to 7.15.2 and 8.0.1 have a vulnerability where the request URI is passed as text to the transport layer while the Host header is supplied separately. This causes libcurl to decode and resolve the URI host differently than the application expects, potentially allowing an attacker who controls the URI to bypass host checks and access unintended hosts. The issue is fixed in versions 7.15.2 and 8.0.1.
CVSS v3.1
Score 7.2high
Affected software
pkg:deb/ubuntu/guzzle?arch=source&distro=noblepkg:deb/ubuntu/guzzle?arch=source&distro=resoluteRun on your own infrastructure? Check whether these packages are installed with threat-finder — our free open-source scanner.
AI-Powered Analysis
Machine-generated threat intelligence
Technical Analysis
Guzzle, a PHP HTTP client, prior to versions 7.15.2 and 8.0.1, passes the request URI as text to the transport and supplies the Host header separately. The cURL handlers set CURLOPT_URL to the literal URI and push the Host header into CURLOPT_HTTPHEADER. libcurl then parses and decodes the URI host, including percent-decoding and IDNA mapping, to resolve and connect to the target host. This can cause divergence between the host used by libcurl and the Host header sent to the server. For example, a URI host like 127.0.0.%31 is rejected by PHP's filter_var() as an IP literal but decoded by libcurl to 127.0.0.1, allowing connection to loopback while the Host header remains 127.0.0.%31. An attacker controlling the URI can exploit this to reach hosts excluded by application checks and read responses. This also affects proxy routing and redirect decisions based on the literal host. Exploitation requires the application to build request URIs from untrusted input and make host decisions before passing to Guzzle. The vulnerability is fixed in versions 7.15.2 and 8.0.1.
Potential Impact
An attacker who can influence the URI used in a Guzzle request may bypass host-based access controls by exploiting the difference between the URI host as interpreted by libcurl and the Host header sent to the server. This can lead to unauthorized access to internal or excluded hosts and disclosure of response data. The vulnerability also affects proxy routing and authorization header stripping behavior, potentially impacting security decisions. There is no indication of denial of service or code execution impact.
Mitigation Recommendations
Upgrade Guzzle to version 7.15.2 or later, or 8.0.1 or later, where this issue is fixed. If upgrading is not immediately possible, avoid building request URIs from untrusted input or performing host-based access control decisions before passing URIs to Guzzle. Patch status is confirmed fixed in the specified versions.
Technical Details
- Gcve Source
- db.gcve.eu
- Osv Id
- UBUNTU-CVE-2026-69246
- Osv Schema Version
- 1.7.0
- Aliases
- []
- Ecosystems
- ["Ubuntu:24.04:LTS","Ubuntu:26.04:LTS"]
- Database Specific Severity
- null
- Cvss Version
- 3.1
Threat ID: 6a74cfb1bf8831d5391b269e
Added to database: 08/06/2026, 18:17:21 UTC
Last enriched: 08/06/2026, 19:40:09 UTC
Last updated: 08/07/2026, 02:07:40 UTC
Views: 7
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Actions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
Need more coverage?
Upgrade to Pro Console for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.
Latest Threats
Check if your credentials are on the dark web
Instant breach scanning across billions of leaked records. Free tier available.