Skip to main content

Guzzle HTTP Client EUVDEUVD-2026-51854

| CVE-2026-67339 MEDIUM
Information Exposure (CWE-200)
2026-08-01 VulnCheck GHSA-32rq-jhr7-m3hh
6.9
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Operate or compromise target origin server
  2. Delivery
    Observe victim application send request with Proxy-Authorization via SOCKS or no_proxy route
  3. Exploit
    Capture leaked credential from origin server access logs
  4. Execution
    Authenticate to victim's proxy using stolen credential
  5. Impact
    Pivot through proxy to restricted destinations

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V14 - Data Protection Data exposure prevention
MITRE ATT&CK

2 techniques across 2 tactics: Collection, Discovery

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires two co-present conditions: (1) the Guzzle application must set a Proxy-Authorization header as a first-class PSR-7 header (via client 'headers' defaults, the 'headers' request option, or middleware - not through raw CURLOPT_HTTPHEADER/CURLOPT_PROXYHEADER), and (2) at least one of the following routing conditions must apply to that request: the request is sent directly (proxy option set to empty string or absent), the proxy is bypassed because the target matches a no_proxy/NO_PROXY environment variable rule, the configured proxy is a SOCKS proxy (SOCKS4/SOCKS5 do not use the HTTP proxy header channel, so Guzzle never migrates the header), or the request follows a redirect from a proxied hop into any of the above direct routes. On hosts running libcurl older than 7.37.0 or PHP cURL builds lacking CURLOPT_PROXYHEADER/CURLHEADER_SEPARATE support, the header leaks unconditionally on all routes regardless of proxy type. Exploitation is further limited to scenarios where the attacker controls or can observe the origin server receiving the misdirected request (e.g., via access logs, tracing systems, or application logs). No authentication or privilege is required from the attacker's side - the leak is triggered entirely by the victim application's routing behavior.

Impact

The CVSS 4.0 base score of 6.9 with vector AV:N/AC:L/AT:N/PR:N/UI:N/VC:L reflects a network-reachable, low-complexity information disclosure - consistent with a credential leakage class finding. However, the official vector's AC:L and AT:N require scrutiny: successful exploitation depends on specific application-side conditions (SOCKS proxy usage, no_proxy bypass, direct-connection mode, or cross-proxy redirects) that are not universally present in default Guzzle deployments. A more conservative independent assessment would raise AC or AT, reducing the score slightly. No EPSS score was provided in the input data and cannot be inferred. KEV status is absent - no confirmed active exploitation. No public proof-of-concept code has been reported. Despite these limiting signals, the real-world risk is meaningful for applications that use Proxy-Authorization credentials over proxied HTTP clients in multi-tier or cloud-egress architectures: the credential leakage is silent, requires no attacker interaction with the victim system, and could provide persistent proxy access. The SSVC exploitation dimension is 'none' based on available data, but technical impact is partial (credential theft enabling secondary abuse). The combination of no KEV, no POC, and condition-dependent triggering suggests this is a genuine but targeted-exposure risk rather than an immediately mass-exploitable critical.

Exploit ScenarioDerived

An attacker operates or compromises a web server that serves as an origin endpoint for a PHP application using Guzzle with Proxy-Authorization credentials configured. When the application sends a request that Guzzle routes through a SOCKS proxy - or one that matches a no_proxy rule causing a direct connection - the Proxy-Authorization header appears in the HTTP request received by the attacker's origin server and is recorded in its access log. The attacker then reuses the captured credential to connect through the victim's proxy infrastructure, gaining access to internal or paid-gateway resources the proxy is trusted to reach. No public exploit code has been identified at time of analysis, but the exploitation path requires only standard HTTP server log access.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Aug 01, 2026

Proxy-Authorization header leakage in guzzlehttp/guzzle before 7.14.2 allows origin servers to receive proxy credentials due to a cURL handler misclassification bug. When requests are routed via SOCKS proxies, match no_proxy bypass rules, connect directly with proxying disabled, or cross proxy boundaries during redirects, Guzzle fails to migrate the Proxy-Authorization header from cURL's origin header list to the proxy-only channel - the credential arrives at the origin server instead of being confined to the proxy hop. An attacker who controls or monitors a destination origin server can harvest these credentials from access logs, then abuse the proxy to impersonate the proxy principal or reach destinations gated behind that proxy. No public exploit code has been identified at time of analysis.

RemediationAI

Upgrade guzzlehttp/guzzle to version 7.14.2 or later via Composer: run 'composer require guzzlehttp/guzzle:^7.14.2'. This is the vendor-confirmed fixed release as documented in the GitHub security advisory GHSA-94pj-82f3-465w and the upstream commit at https://github.com/guzzle/guzzle/commit/9e4580d4b9981e903dc6323fe37f50a96e85b05e (PR #3876). If immediate upgrade is blocked, three compensating controls can reduce exposure: first, avoid passing Proxy-Authorization as a first-class PSR-7 request header - instead supply proxy credentials exclusively through cURL's raw CURLOPT_PROXYUSERPWD option, bypassing the affected code path entirely (trade-off: requires lower-level cURL configuration and cannot be set via Guzzle's standard header API); second, disable redirect following (RequestOptions::ALLOW_REDIRECTS => false) where Proxy-Authorization is in use, which eliminates the cross-origin redirect disclosure vector (trade-off: breaks any workflow relying on HTTP redirects); third, rotate any Proxy-Authorization credentials that may have been exposed to origin servers, particularly if access logs on destination servers are accessible to third parties. Detailed guidance is available at https://github.com/guzzle/guzzle/security/advisories/GHSA-94pj-82f3-465w.

Affected VersionsENISA

guzzle 0 <7.14.2

Affected Packages

composer guzzlehttp/guzzle fix: 7.14.2
euvd guzzle fix: 7.14.2

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's CurlHandler and CurlMultiHandler (the default HTTP transport when PHP's cURL extension is installed) build the outgoing request by placing all first-class PSR-7 headers into cURL's CURLOPT_HTTPHEADER option - the origin header list. The library's intended design moves Proxy-Authorization to cURL's CURLOPT_PROXYHEADER option (the proxy-only channel) only when Guzzle's own routing logic predicts an HTTP or HTTPS proxy will be used. This prediction diverges from the route libcurl actually takes in four cases: direct connections, no_proxy/NO_PROXY rule matches, SOCKS proxies (which do not use the HTTP proxy header channel at all), and cross-origin redirects where redirect middleware re-evaluates the proxy per hop but - unlike Authorization and Cookie - does not strip Proxy-Authorization. On installations where libcurl is older than 7.37.0 or the PHP cURL extension lacks CURLOPT_PROXYHEADER and CURLHEADER_SEPARATE support, no proxy-only channel is available and the credential leaks on every route. The stream handler serialized first-class headers before proxy selection, introducing a parallel disclosure path. CWE-200 (Exposure of Sensitive Information to an Unauthorized Actor) accurately captures the root cause: the credential, scoped by RFC 9110 to the next inbound proxy only, is transmitted to an unintended recipient. CPE cpe:2.3:a:guzzle:guzzle:*:*:*:*:*:*:*:* covers all Guzzle releases; the fix is in composer package guzzlehttp/guzzle 7.14.2.

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

Vendor (VulnCheck) PRIMARY 6.9 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N
vuln.today AI 3.7 LOW

AC:H because triggering the leak requires non-default routing conditions (SOCKS proxy, no_proxy match, or redirect across proxy boundary); C:L for proxy credential disclosure only.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N
Red Hat 5.3 MEDIUM

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Aug 01, 2026 - 13:01 EUVD
CVE Published
Aug 01, 2026 - 12:22 cve.org
MEDIUM 6.9

DescriptionCVE.org

guzzlehttp/guzzle versions before 7.14.2 fail to properly isolate Proxy-Authorization headers from origin servers in cURL handlers. Attackers can capture proxy credentials through origin server access logs when requests are redirected, bypassed, or sent through SOCKS proxies that Guzzle misclassifies as direct connections.

Threat Intelligence Overview

EPSS Score
0.2%
Top 86% exploitable
Prevalence
High
dominant PHP HTTP client, core dependency in Laravel and Symfony ecosystems
Data Quality
8 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment Vendor GitHub VulDB

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact· derived
High
Technical Impact
Partial

Priority Score

34
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +34
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

More in Guzzle

View all
CVE-2026-69246 HIGH POC
7.2 Aug 03

Host confusion in GuzzleHttp Guzzle before 7.15.2 and 8.0.1 allows remote attackers who can influence a fetched URI to b

CVE-2026-69245 MEDIUM POC
6.5 Aug 03

Cookie domain scope bypass in Guzzle PHP HTTP client (prior to 7.15.2 and 8.0.1) allows improper cookie sharing via non-

CVE-2026-67354 HIGH
8.2 Aug 01

URI fragment leakage in guzzlehttp/guzzle's RedirectMiddleware (versions before 7.15.1) exposes sensitive client-side da

CVE-2026-67355 HIGH
8.2 Aug 01

Cookie scope leakage in guzzlehttp/guzzle before 7.15.1 allows an attacker controlling a child subdomain to receive host

CVE-2022-29248 HIGH
8.1 May 25

Guzzle is a PHP HTTP client. Rated high severity (CVSS 8.1), this vulnerability is remotely exploitable, no authenticati

CVE-2022-31091 HIGH
7.7 Jun 27

Guzzle, an extensible PHP HTTP client. Rated high severity (CVSS 7.7), this vulnerability is remotely exploitable, low a

CVE-2022-31090 HIGH
7.7 Jun 27

Guzzle, an extensible PHP HTTP client. Rated high severity (CVSS 7.7), this vulnerability is remotely exploitable, low a

CVE-2022-31043 HIGH
7.5 Jun 10

Guzzle is an open source PHP HTTP client. Rated high severity (CVSS 7.5), this vulnerability is remotely exploitable, no

CVE-2022-31042 HIGH
7.5 Jun 10

Guzzle is an open source PHP HTTP client. Rated high severity (CVSS 7.5), this vulnerability is remotely exploitable, no

CVE-2026-67353 MEDIUM
6.9 Aug 01

Denial of service in guzzlehttp/guzzle versions before 7.15.1 allows a malicious or compromised upstream server to exhau

CVE-2026-59882 MEDIUM
6.5 Jul 08

Host validation bypass in guzzlehttp/psr7 before 2.12.3 enables URI authority confusion attacks against PHP applications

CVE-2026-59883 MEDIUM POC
6.1 Jul 08

Cookie domain suffix-matching bypass in Guzzle PHP HTTP client (prior to 7.12.3) allows cross-host cookie disclosure, co

Vendor StatusVendor

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy