Description
The component ScopingHttpClient in Symfony HttpClient merges the options of its default scope (such as auth_bearer or auth_basic) into a request before resolving a relative URL against the base_uri, allowing a network-path reference such as "//evil.example/steal" to be sent to another origin together with the default scope’s credentials, and resulting in potential disclosure of those credentials to an attacker-controlled server. This affects Symfony in versions 5.x prior to 5.4.56, 6.x prior to 6.4.50, 7.x prior to 7.4.23, and 8.x prior to 8.1.11.



The resolved URL falls outside the origin of the base URI, yet it keeps the merged options, whereas the absolute spelling "https://evil.example/steal" receives none. The same happens with a different port or user-info part on the same host.









This is reachable whenever an attacker controls the beginning of a URL passed to a client built with a base_uri and credentials, including those created with HttpClient::createForBaseUri() or configured under framework.http_client.scoped_clients.

To solve the issue, after resolving a relative URL against the base URI of the default scope, ScopingHttpClient now compares the scheme and authority of the result with those of the base URI, parsed the way the request is sent.
Published: 2026-11-04
Score: 8.2 High
EPSS: n/a
KEV: No
Impact: Credential Disclosure
Action: Immediate Patch
AI Analysis

Impact

The ScopingHttpClient component in the Symfony HttpClient library merges the authentication options of its default scope into every request before resolving a relative URL against the base_uri. If a request URL contains a network‑path reference such as "//evil.example/steal", the merged credentials are inadvertently sent to the remote host, exposing bearer or basic auth credentials. This leads to an information‑exposure flaw that can compromise the confidentiality of the application's authentication data.

Affected Systems

Sensiolabs Symfony is affected, specifically versions prior to 5.4.56, 6.4.50, 7.4.23, and 8.1.11 across the 5.x, 6.x, 7.x, and 8.x branches. All releases built on the HttpClient component that use a base_uri with credentials are susceptible to this issue.

Risk and Exploitability

The score is 8.2 on the CVSS scale, indicating high severity, but the EPSS score is unavailable so the current exploitation probability is unknown. The vulnerability is listed as not in the CISA KEV catalog, and no public exploits are known. It can be leveraged when an attacker controls the URL passed to a client configured with a base_uri and credentials, for example through user input or an API that builds relative URLs. If an attacker can supply a crafted relative URL that resolves to an external origin, they can capture the default scope credentials and use them for further attacks.

Generated by OpenCVE AI on November 4, 2026 at 19:38 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade Symfony to version 5.4.56, 6.4.50, 7.4.23, or 8.1.11 or later, which implements a safeguard that removes the merged credentials when the resolved URL is cross‑origin.
  • If an immediate upgrade is impossible, avoid embedding authentication credentials in the default scope or remove them from the HttpClient before creating requests that may resolve to remote origins.
  • Validate and reject network‑path references in user‑supplied URLs, ensuring that relative URLs are resolved only against the intended base and that cross‑origin requests do not carry default authentication.

Generated by OpenCVE AI on November 4, 2026 at 19:38 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Wed, 04 Nov 2026 18:00:00 +0000

Type Values Removed Values Added
Description The component ScopingHttpClient in Symfony HttpClient merges the options of its default scope (such as auth_bearer or auth_basic) into a request before resolving a relative URL against the base_uri, allowing a network-path reference such as "//evil.example/steal" to be sent to another origin together with the default scope’s credentials, and resulting in potential disclosure of those credentials to an attacker-controlled server. This affects Symfony in versions 5.x prior to 5.4.56, 6.x prior to 6.4.50, 7.x prior to 7.4.23, and 8.x prior to 8.1.11. The resolved URL falls outside the origin of the base URI, yet it keeps the merged options, whereas the absolute spelling "https://evil.example/steal" receives none. The same happens with a different port or user-info part on the same host. This is reachable whenever an attacker controls the beginning of a URL passed to a client built with a base_uri and credentials, including those created with HttpClient::createForBaseUri() or configured under framework.http_client.scoped_clients. To solve the issue, after resolving a relative URL against the base URI of the default scope, ScopingHttpClient now compares the scheme and authority of the result with those of the base URI, parsed the way the request is sent.
Title Symfony: ScopingHttpClient Sends the Credentials of Its Default Scope to Other Origins Through Network-Path References
First Time appeared Sensiolabs
Sensiolabs symfony
Weaknesses CWE-200
CWE-522
CPEs cpe:2.3:a:sensiolabs:symfony:*:*:*:*:*:*:*:*
Vendors & Products Sensiolabs
Sensiolabs symfony
References
Metrics cvssV4_0

{'score': 8.2, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N'}


Subscriptions

Sensiolabs Symfony
cve-icon MITRE

Status: PUBLISHED

Assigner: Checkmarx

Published:

Updated: 2026-11-04T17:43:34.806Z

Reserved: 2026-11-04T13:03:55.851Z

Link: CVE-2026-121971

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-11-04T18:17:43.077

Modified: 2026-11-04T18:17:43.077

Link: CVE-2026-121971

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-11-04T19:45:14Z

Weaknesses
  • CWE-200

    Exposure of Sensitive Information to an Unauthorized Actor

  • CWE-522

    Insufficiently Protected Credentials