Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify PHP app with Guzzle referer option enabled
-
DeliveryCraft or influence initial request URI to contain sensitive fragment
-
ExploitTrigger same-scheme HTTP redirect to attacker-controlled destination
-
ExecutionReceive Referer header at attacker server
-
ImpactExtract sensitive fragment value from header or access logs
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V14 - Data Protection Outbound data filtering
|
| Exploitation Conditions | Exploitation requires three simultaneous conditions: (1) the Guzzle client must be configured with allow_redirects => ['referer' => true] explicitly set - this option is disabled by default and must be deliberately enabled by the developer; (2) the initial request URI must contain a sensitive value in its fragment portion (after '#'), such as an access token, one-time password, OAuth state parameter, or session identifier placed there by the calling application; and (3) the HTTP response must be a same-scheme redirect (e.g., HTTPS to HTTPS, not HTTPS to HTTP) to a destination under attacker control or with lower trust than the originating host. Applications that leave the referer option at its default of false, do not embed sensitive data in URI fragments, do not follow redirects, or only redirect within the same trust boundary are not vulnerable. Exploitation is limited to server-side PHP applications making outbound HTTP requests - end-user browsers are not directly affected. |
| Impact | The CVSS 4.0 score of 8.2 must be contextualized against the AT:P (specific attack requirements present) and AC:H (high complexity) metrics - exploitation requires a non-default configuration, sensitive data in URI fragments, and a same-scheme redirect to an attacker-controlled destination, all simultaneously. No CISA KEV listing exists and no confirmed public exploit or POC has been identified, making opportunistic mass exploitation unlikely. The VC:H rating is justified when all conditions align, as entire authentication tokens or one-time secrets could be disclosed to an unintended third party. Real-world risk is meaningfully lower than the headline score for most deployments where the referer option is disabled by default. Organizations should prioritize patching in applications that explicitly enable the referer redirect option or that embed sensitive data in URI fragments, as those are the only deployments at meaningful risk. |
| Exploit ScenarioDerived | An attacker operates a web server that issues same-scheme HTTPS redirects to attacker-controlled infrastructure. A PHP application using Guzzle with allow_redirects.referer enabled requests a URI such as https://trusted.example.com/reset#token=abc123; Guzzle follows the redirect and transmits a Referer header containing the full URI including the fragment to the attacker's server, where the token is readable from access logs or application code. No public exploit code has been identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 01, 2026
URI fragment leakage in guzzlehttp/guzzle's RedirectMiddleware (versions before 7.15.1) exposes sensitive client-side data to unintended redirect destinations when the non-default allow_redirects.referer option is explicitly enabled. An attacker who controls a same-scheme redirect target can harvest one-time login tokens, OAuth state values, or access tokens embedded in URI fragments from the Referer header included in the redirected request. No public exploit has been identified at time of analysis, but the CVSS 4.0 score of 8.2 with AC:H and AT:P accurately reflects the real-world complexity - exploitation requires three simultaneous non-trivial conditions to align.
RemediationAI
Upgrade guzzlehttp/guzzle to version 7.15.1 or later via Composer (composer require guzzlehttp/guzzle:^7.15.1); the fix is confirmed in commit 7b68220d6543f6f80fe62e633361fc9d4ead14d4 and pull request https://github.com/guzzle/guzzle/pull/3901, which strips URI fragments before Referer header generation. If immediate upgrade is not possible, ensure the allow_redirects.referer option is not set to true - its default value of false makes the application unexploitable via this vector. Audit all Guzzle request call sites for explicit 'referer' => true settings and revert them to false or remove them until the patch is applied; note that this disables automatic Referer header generation on redirects, which may affect server-side analytics or logging that depends on that header as a side effect.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in composer, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Guzzle is the dominant PHP HTTP client library, distributed via Composer as guzzlehttp/guzzle (CPE: cpe:2.3:a:guzzle:guzzle:*:*:*:*:*:*:*:*). The affected component is RedirectMiddleware, which handles automatic HTTP redirect following. Per RFC 7231, URI fragments (the '#'-delimited suffix) are client-side constructs never transmitted to servers in HTTP request targets - they exist solely for local navigation. CWE-201 (Insertion of Sensitive Information Into Sent Data) captures the root cause: Guzzle's Referer generation logic failed to strip the fragment before copying the URI into the Referer header for same-scheme (e.g., HTTPS to HTTPS) redirects, while already correctly stripping user credentials. The vulnerability affects both the cURL and stream handler backends. The fix in 7.15.1 extends the existing sanitization to strip the fragment before Referer header generation, matching standard browser behavior.
Know when Guzzle gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
Non-default referer configuration and attacker-controlled same-scheme redirect required (AC:H, PR:N); only confidentiality impact as no data is altered or service disrupted.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
guzzlehttp/guzzle versions before 7.15.1 contain an information disclosure vulnerability in RedirectMiddleware. When the optional allow_redirects.referer setting is enabled, the middleware copies the URI fragment (the portion after '#') from the referring request into the generated Referer header when following a same-scheme redirect (e.g., HTTPS to HTTPS). An attacker who controls the redirect destination can read this fragment from the incoming Referer header, potentially disclosing one-time login secrets, access tokens, state values, or other sensitive client data to a server never meant to receive it. The referer setting is disabled by default. Fixed in 7.15.1, which strips the fragment before generating the Referer value.
Executive ViewAI
guzzlehttp/guzzle versions prior to 7.15.1 leak sensitive URI fragments-including authentication tokens, OAuth state values, and access credentials-to redirect destinations when the non-default allow_redirects.referer option is enabled, creating credential compromise risk for any organization using this HTTP client library if attackers can control redirect targets.
Vendor-released patch: guzzlehttp/guzzle version 7.15.1 or later. Until patched, disable the allow_redirects.referer configuration option and maintain a whitelist of trusted redirect destinations to restrict attacker-controlled targets.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Host confusion in GuzzleHttp Guzzle before 7.15.2 and 8.0.1 allows remote attackers who can influence a fetched URI to b
Cookie domain scope bypass in Guzzle PHP HTTP client (prior to 7.15.2 and 8.0.1) allows improper cookie sharing via non-
Cookie scope leakage in guzzlehttp/guzzle before 7.15.1 allows an attacker controlling a child subdomain to receive host
Guzzle is a PHP HTTP client. Rated high severity (CVSS 8.1), this vulnerability is remotely exploitable, no authenticati
Guzzle, an extensible PHP HTTP client. Rated high severity (CVSS 7.7), this vulnerability is remotely exploitable, low a
Guzzle, an extensible PHP HTTP client. Rated high severity (CVSS 7.7), this vulnerability is remotely exploitable, low a
Guzzle is an open source PHP HTTP client. Rated high severity (CVSS 7.5), this vulnerability is remotely exploitable, no
Guzzle is an open source PHP HTTP client. Rated high severity (CVSS 7.5), this vulnerability is remotely exploitable, no
Denial of service in guzzlehttp/guzzle versions before 7.15.1 allows a malicious or compromised upstream server to exhau
Proxy-Authorization header leakage in guzzlehttp/guzzle before 7.14.2 allows origin servers to receive proxy credentials
Host validation bypass in guzzlehttp/psr7 before 2.12.3 enables URI authority confusion attacks against PHP applications
Cookie domain suffix-matching bypass in Guzzle PHP HTTP client (prior to 7.12.3) allows cross-host cookie disclosure, co
EUVD-2026-51825
GHSA-mqq9-gxg5-m58g
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB