symfony/http-client security advisory
CVE-2026-48736: IpUtils::PRIVATE_SUBNETS Omits IPv6 Transition Forms (6to4, NAT64, Teredo, IPv4-compatible): SSRF Bypass in NoPrivateNetworkHttpClient in symfony/http-client
CVE-2026-48736 is a medium-severity SSRF vulnerability in the PHP package symfony/http-client (CVSS 8.6), published 14 July 2026. It is fixed in 5.4.53; earlier versions are affected. It can be exploited without an account.
medium 8.6 published 2026-07-14 · updated 2026-07-16
- Affected versions
- >= 5.4.0, < 5.4.53
- Fixed in
- 5.4.53
- Newest release
- 8.1.10
- Severity
- Medium · CVSS 8.6
- Type
- Server-side request forgery (SSRF)
CWE-184, CWE-918 - Exploited in the wild
- Not on the CISA KEV list
checked 2026-11-04
Also affects
- symfony/http-foundation >= 6.4.0, < 6.4.41; >= 7.0.0, < 7.4.13; >= 8.0.0, < 8.0.13 fixed in 6.4.41, 7.4.13, 8.0.13
- symfony/symfony >= 5.4.0, < 5.4.53; >= 6.4.0, < 6.4.41; >= 7.0.0, < 7.4.13; >= 8.0.0, < 8.0.13 fixed in 5.4.53, 6.4.41, 7.4.13, 8.0.13
Is your symfony/http-client version affected?
Who can exploit CVE-2026-48736
- Access: No account. Anyone who can send a request to an app that uses the affected code.
CVSS vector (scored by NVD): CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N
How to fix CVE-2026-48736 in symfony/http-client
- Find the installed version:
composer show symfony/http-client. If you never required it yourself,composer why symfony/http-clientshows which package pulls it in. - Update it:
composer update symfony/http-client --with-all-dependencies. You need 5.4.53 or newer. - If Composer will not go that high, your composer.json constraint is holding it back. Widen it (for example
"symfony/http-client": "^5.4.53"if you can take that version), or upgrade the package that requires it. - Run
composer audit. It reads the same advisory data and should no longer list CVE-2026-48736. - Commit composer.lock and deploy it. On the server, run
composer install --no-devfrom the lock file, notcomposer update.
If you cannot upgrade yet
- Block outbound requests from the app server to private ranges and cloud metadata (169.254.169.254) at the firewall.
- Do not pass user-supplied URLs to the affected feature.
- If your app does not use the affected feature, note that in your audit, but still plan the upgrade.
The CVE-2026-48736 advisory
Symfony is a PHP framework for web and console applications and a set of reusable PHP components. From 5.4.0 to 5.4.53, 6.4.41, 7.4.13, and 8.0.13, NoPrivateNetworkHttpClient and IpUtils::PRIVATE_SUBNETS omitted IPv6 transition prefixes such as 6to4, NAT64, Teredo, and IPv4-compatible IPv6, allowing attacker-supplied URLs to represent private IPv4 targets in forms that IpUtils::isPrivateIp() did not block. This issue is fixed in versions 5.4.53, 6.4.41, 7.4.13, and 8.0.13.
References
- GitHub security advisory GHSA-38cx-cq6f-5755 github.com
- Symfony security advisory symfony.com
- Fix commit 8276536 github.com
- Fix commit 85b8315 github.com
- Release v5.4.53 github.com
- Release v6.4.41 github.com
- Release v7.4.13 github.com
Other symfony/http-client advisories
- low CVE-2024-50342: Internal address and port enumeration allowed by NoPrivateNetworkHttpClient 2024-11-13
Related
Need help patching or upgrading? Laskyr does PHP and Laravel security fixes and upgrades. Tell us what you run and we reply with a plan and a price.
Ask about a fixWhere this data comes from
- Affected and fixed versions: the Packagist security advisories API (GitHub Advisory Database and FriendsOfPHP), the same data
composer audituses. Synced 2026-11-03. - Description, score, weakness and references: NIST National Vulnerability Database (NVD), checked 2026-11-04. This product uses data from the NVD API but is not endorsed or certified by the NVD.
- Exploited-in-the-wild status: the CISA Known Exploited Vulnerabilities catalog, checked 2026-11-04.
- Compiled by Daniel Lasek at Laskyr from the sources above. The summary, “who can exploit it”, “how to fix it” and hardening sections are our plain-English reading of the record and are generated from it. The quoted description is the record's own text. Spot an error? Tell us.