Skip to main content

Symfony HttpClient EUVDEUVD-2026-44372

| CVE-2026-48736 MEDIUM
Incomplete List of Disallowed Inputs (CWE-184)
2026-06-15 https://github.com/symfony/symfony GHSA-38cx-cq6f-5755
6.9
CVSS 4.0 · Vendor: https://github.com/symfony/symfony
View

Attack ChainAIDerived

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

  1. Access
    Supply crafted IPv6 transition address URL
  2. Delivery
    IpUtils::isPrivateIp() returns false (filter bypassed)
  3. Exploit
    NoPrivateNetworkHttpClient dispatches HTTP request
  4. Execution
    IPv6 routing resolves to embedded private IPv4 target
  5. Persist
    Internal service responds
  6. Impact
    Response content returned to attacker

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V2 - Validation and Business Logic Input validation completeness
Exploitation Conditions

The application must explicitly use Symfony\Component\HttpClient\NoPrivateNetworkHttpClient as its HTTP client and must accept attacker-controlled input as the request URL or URL host - the exact use case the decorator is designed for, such as webhook processors, RSS/Atom feed fetchers, or link preview generators. On the network side, successful packet delivery to the embedded private IPv4 target additionally requires one of: a 6to4 tunnel interface on the server (for 2002::/16 payloads), an upstream NAT64 gateway in the network path (for 64:ff9b::/96 payloads), or kernel-level IPv4-compatible address handling (for ::/96 payloads, behavior is OS-dependent and often dropped on modern Linux). Teredo (2001::/32) is the broadest prefix and may overlap legitimate global unicast addresses, requiring care if used as a network-layer block. Deployments with independent egress firewall rules blocking outbound connections to RFC1918/loopback ranges or blocking all IPv6 reduce the exploitability of specific transition methods even though the application-layer filter bypass is unconditional.

Impact

No CVSS vector was provided by NVD or the vendor for this CVE, so all scoring is independently assessed. The vulnerability represents a meaningful SSRF protection failure for applications that rely solely on NoPrivateNetworkHttpClient as their egress guard - a pattern explicitly encouraged by Symfony documentation for webhook processors, RSS importers, and link preview services. Real-world exploitation is layered: the security boundary violation (the false-negative dispatch decision from IpUtils::isPrivateIp()) occurs unconditionally on all affected versions, but packet delivery to the embedded private IPv4 target further requires the server's IPv6 routing to support the specific transition mechanism used (6to4 tunnel interface, NAT64 upstream gateway, or kernel IPv4-compatible handling). Environments with strict egress firewall rules blocking IPv6 or outbound connections to private ranges are partially protected at the network layer even if the application-layer filter is bypassed. No EPSS score is available; no KEV listing exists; no POC code has been publicly released. Risk is real but bounded: it is highest in cloud-hosted applications without independent network-layer egress controls, particularly those vulnerable to cloud metadata endpoint exposure (169.254.169.254).

Exploit ScenarioDerived

An attacker who can submit URLs to a Symfony-powered webhook registration endpoint posts http://[2002:7f00:1::]/ - the 6to4 encoding of 127.0.0.1. IpUtils::isPrivateIp() evaluates this address against the incomplete prefix list, returns false, and NoPrivateNetworkHttpClient dispatches the HTTP GET. If the application server has a 6to4 tunnel interface or an upstream NAT64 gateway, the request reaches the loopback interface, where a locally bound service (such as a database admin console, internal API, or cloud instance metadata endpoint at http://169.254.169.254/ via a second crafted payload) returns its response body to the attacker. No public POC code has been released, but the bypass payloads are fully documented in the official advisory.

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

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

Alert me

AnalysisAIv1 – Jun 15, 2026

SSRF filter bypass in Symfony's NoPrivateNetworkHttpClient permits requests to private IPv4 addresses to be smuggled via four classes of IPv6 transition encodings - 6to4 (2002::/16), NAT64 (64:ff9b::/96 and 64:ff9b:1::/48), Teredo (2001::/32), and IPv4-compatible (::/96) - none of which appeared in the IpUtils::PRIVATE_SUBNETS blocklist. Any Symfony application on versions 5.4.0-5.4.52 or 6.4.0-8.0.12 that uses NoPrivateNetworkHttpClient as its SSRF guard and accepts attacker-controlled URLs is vulnerable to the filter bypass; actual packet delivery to the embedded private IPv4 is additionally gated by the server's IPv6 routing configuration. No public exploit code has been released and this CVE is not in CISA KEV, but the bypass payloads are fully enumerated in the official security advisory.

RemediationAI

Upgrade to the earliest patched release for your branch: symfony/http-client 5.4.53, or symfony/http-foundation 6.4.41, 7.4.13, or 8.0.13. The patches add the five missing IPv6 transition prefixes (::/96, 2002::/16, 2001::/32, 64:ff9b::/96, 64:ff9b:1::/48) to IpUtils::PRIVATE_SUBNETS and to NoPrivateNetworkHttpClient's private constant. Patch commits are at https://github.com/symfony/symfony/commit/82765368cf74177c36613575182f168a2eb765b2 (5.4 branch) and https://github.com/symfony/symfony/commit/85b831555be8ea1f43bf01078afe87bc4c92f65e (6.4+ branch). If immediate upgrade is not feasible, compensating controls include: blocking all outbound IPv6 traffic at the network firewall or cloud security group (eliminates the routing pathway for 6to4/NAT64 but does not fix the filter logic); restricting outbound HTTP from the application to an allowlisted proxy that enforces destination controls; and independently protecting cloud metadata endpoints such as 169.254.169.254 via instance-level firewall rules that do not rely on application-layer filtering. Note that disabling IPv6 at the OS level prevents 6to4 and NAT64 routing but may be operationally disruptive and does not address all transition forms.

Affected VersionsENISA

symfony 5.4.0, < 5.4.53
symfony 7.0.0-BETA1, < 7.4.13
http-foundation 8.0.0-BETA1, < 8.0.13
http-foundation 6.0.0-BETA1, < 6.4.41
http-client 5.4.0, < 5.4.53
symfony 8.0.0-BETA1, < 8.0.13
symfony 6.0.0-BETA1, < 6.4.41
http-foundation 7.0.0-BETA1, < 7.4.13

Affected Packages

composer symfony/http-client fix: 5.4.53
composer symfony/http-foundation fix: 6.4.41, 7.4.13, 8.0.13
composer symfony/symfony fix: 5.4.53, 6.4.41, 7.4.13, 8.0.13
euvd http_client_5_4_0 fix: 5.4.53
euvd http_foundation_6_0_0_beta1 fix: 6.4.41
euvd http_foundation_7_0_0_beta1 fix: 7.4.13
euvd http_foundation_8_0_0_beta1 fix: 8.0.13
euvd symfony_5_4_0 fix: 5.4.53
euvd symfony_6_0_0_beta1 fix: 6.4.41
euvd symfony_7_0_0_beta1 fix: 7.4.13
euvd symfony_8_0_0_beta1 fix: 8.0.13

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 11 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

Affected packages are composer/symfony/http-client (5.4 branch) and composer/symfony/http-foundation (6.4+ branches), identified via CPE strings pkg:composer/symfony_http-client and pkg:composer/symfony_http-foundation. The root cause is CWE-184 (Incomplete List of Disallowed Inputs): IpUtils::checkIp6() performs a pure bitwise CIDR prefix comparison against a hardcoded constant list and never decodes the IPv4 payload embedded within IPv6 transition addresses. IPv6 transition mechanisms each embed a 32-bit IPv4 address at a fixed bit offset - 6to4 (RFC 3056) stores it in bits 16-47 of the 2002::/16 prefix; NAT64 (RFC 6052/RFC 8215) in the low 32 bits of 64:ff9b::/96 and 64:ff9b:1::/48; Teredo (RFC 4380) encodes it obfuscated in the 2001::/32 prefix; IPv4-compatible (RFC 4291 §2.5.5.1) places it in the low 32 bits of ::/96. The existing blocklist already included ::ffff:0:0/96 (IPv4-mapped), demonstrating awareness of the pattern, but the four remaining transition forms were absent. The fix adds all five missing prefixes, aligning Symfony's policy with Chromium and Mozilla's Private Network Access specifications.

Know when Mozilla 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 (https://github.com/symfony/symfony) PRIMARY 6.9 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:N/SC:H/SI:L/SA:N
vuln.today AI 9.3 CRITICAL

Network-reachable SSRF bypass requiring no authentication to supply the URL; scope changes to internal systems (S:C); high confidentiality impact from internal service disclosure, low integrity from potential state-changing internal requests.

3.1 AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:N/SC:H/SI:L/SA:N

Primary rating from Vendor (https://github.com/symfony/symfony).

CVSS VectorVendor: https://github.com/symfony/symfony

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

Lifecycle Timeline

1
CVSS changed
Jul 14, 2026 - 20:22 NVD
6.9 (MEDIUM)

DescriptionCVE.org

Description

Symfony\Component\HttpClient\NoPrivateNetworkHttpClient is documented as a decorator that blocks requests to private networks by default. The list of blocked subnets (Symfony\Component\HttpFoundation\IpUtils::PRIVATE_SUBNETS on 6.4+, a private constant in NoPrivateNetworkHttpClient on 5.4) enumerates RFC1918, loopback, link-local and IPv4-mapped IPv6 (::ffff:0:0/96) prefixes, but omits the remaining IPv6 transition forms that can embed a private IPv4 destination: 6to4 (2002::/16, RFC 3056), Teredo (2001::/32, RFC 4380), NAT64 (64:ff9b::/96, RFC 6052 and 64:ff9b:1::/48, RFC 8215) and IPv4-compatible IPv6 (::/96, RFC 4291 §2.5.5.1).

IpUtils::checkIp6() is a pure bitwise CIDR comparison against the constants list and never extracts the embedded IPv4, so an attacker who can supply a URL writes the loopback / RFC1918 IPv4 target as e.g. http://[2002:7f00:1::]/ (6to4 → 127.0.0.1), http://[64:ff9b::7f00:1]/ (NAT64 → 127.0.0.1), http://[::7f00:1]/ (IPv4-compatible → 127.0.0.1) or http://[2001::1]/ (Teredo). IpUtils::isPrivateIp() returns false and NoPrivateNetworkHttpClient dispatches the request.

Real-world reachability of the embedded IPv4 depends on the deploy's IPv6 routing (6to4 tunnel interface, upstream NAT64 gateway, kernel handling of IPv4-compatible addresses), but the security boundary the decorator promises - the dispatch decision - is crossed regardless of whether the packet ultimately lands on the embedded IPv4.

Resolution

The private-subnet list now includes ::/96, 2002::/16, 2001::/32, 64:ff9b::/96 and 64:ff9b:1::/48. Blanket blocking of these prefixes matches the policy applied by Chromium and Mozilla's Private Network Access; server-side HTTPS APIs are not legitimately published on these prefixes.

The patches for this issue are available here for branch 5.4 and here for branch 6.4 (and forward-ported to 7.4, 8.0 and 8.1).

Credits

Symfony would like to thank tonghuaroot for reporting the issue and Nicolas Grekas for providing the fix.

Threat Intelligence Overview

EPSS Score
0.5%
Top 63% exploitable
Threat Intel
1
1 source
Social Media
22
Sightings
Data Quality
5 sources
Confidence: Medium

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.5%
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· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact· derived
Medium

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.

CVE-2015-4495 HIGH POC
8.8 Aug 08

The PDF reader in Mozilla Firefox before 39.0.3, Firefox ESR 38.x before 38.1.1, and Firefox OS before 2.2 allows remote

CVE-2013-1690 HIGH POC
8.8 Jun 26

Mozilla Firefox before 22.0, Firefox ESR 17.x before 17.0.7, Thunderbird before 17.0.7, and Thunderbird ESR 17.x before

CVE-2013-0758 CRITICAL POC
9.3 Jan 13

Mozilla Firefox before 18.0, Firefox ESR 10.x before 10.0.12 and 17.x before 17.0.2, Thunderbird before 17.0.2, Thunderb

CVE-2013-0753 CRITICAL POC
9.3 Jan 13

Use-after-free vulnerability in the serializeToStream implementation in the XMLSerializer component in Mozilla Firefox b

CVE-2012-3993 CRITICAL POC
9.3 Oct 10

The Chrome Object Wrapper (COW) implementation in Mozilla Firefox before 16.0, Firefox ESR 10.x before 10.0.8, Thunderbi

CVE-2013-1710 CRITICAL POC
10.0 Aug 07

The crypto.generateCRMFRequest function in Mozilla Firefox before 23.0, Firefox ESR 17.x before 17.0.8, Thunderbird befo

CVE-2017-3823 HIGH POC
8.8 Feb 01

An issue was discovered in the Cisco WebEx Extension before 1.0.7 on Google Chrome, the ActiveTouch General Plugin Conta

CVE-2014-8636 HIGH POC
7.5 Jan 14

The XrayWrapper implementation in Mozilla Firefox before 35.0 and SeaMonkey before 2.32 does not properly interact with

CVE-2013-0757 CRITICAL POC
9.3 Jan 13

The Chrome Object Wrapper (COW) implementation in Mozilla Firefox before 18.0, Firefox ESR 17.x before 17.0.2, Thunderbi

CVE-2014-1510 CRITICAL POC
9.8 Mar 19

The Web IDL implementation in Mozilla Firefox before 28.0, Firefox ESR 24.x before 24.4, Thunderbird before 24.4, and Se

CVE-2014-1511 CRITICAL POC
9.8 Mar 19

Mozilla Firefox before 28.0, Firefox ESR 24.x before 24.4, Thunderbird before 24.4, and SeaMonkey before 2.25 allow remo

CVE-2013-0643 HIGH
8.8 Feb 27

The Firefox sandbox in Adobe Flash Player before 10.3.183.67 and 11.x before 11.6.602.171 on Windows and Mac OS X, and b

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