CVE-2026-48784·PHP vulnerability
Symfony is a PHP framework for web and console applications and a set of reusable PHP components. Prior to 5.4.53, 6.4.41, 7.4.13, and 8.0.13, UrlGenerator::doGenerate() used strtr() dot-segment encoding that skipped every other chained ../ or ./ segment, allowing attacker-controlled route parameters to generate URLs that collapse to a different path under RFC 3986 normalization. This issue is fixed in versions 5.4.53, 6.4.41, 7.4.13, and 8.0.13.
- Severity
- medium
- Software
- PHP
- Fixed in
- 8.0.13
- Published
- 2026-07-14
Affected versions
From: 8.0.0
Until: 8.0.13
Fixed in: 8.0.13
How to fix this CVE
Update Symfony to version 8.0.13 or later to resolve a URL generation flaw in the UrlGenerator component. This vulnerability allows attackers to craft malicious route parameters that bypass path normalization, potentially leading to unintended access to application resources. Immediately patch your PHP installation and verify that all Symfony dependencies are at the minimum fixed versions.
sudo dnf update php && composer update symfony/routing:^8.0.13Defensia detects this vulnerability
What an exploitation attempt looks like
Sample log line indicative of exploitation attempts:
(?:/{2,}|\.\.?/){2,}|(?:%2e%2e|\.\.)?(?:%2f|/)(?:%2e%2e|\.\.)|(?:%2e%2e%2f)+|(?:\./)+\.\.(?:/|$)WAF mitigation (if patching is not yet possible)
Add this rule to your WAF to block exploitation attempts while you schedule the patch.
Implement URL parameter validation rules to reject requests containing path traversal sequences (../, ./, encoded variants like %2e%2e%2f). Block any route parameters that contain consecutive dots or dot-segments that would normalize to parent directory paths.How to check if you are affected
- Run `php -v` to check your installed PHP version and verify Symfony framework version with `composer show symfony/routing`
- Review your application's routing configuration and identify any routes accepting user-controlled parameters that are used in URL generation
- Search application logs for requests containing sequences like `../../` or `././` in URL parameters or generated URLs
- After updating, re-run `composer show symfony/routing` to confirm the package version is 8.0.13 or higher
FAQ
What is CVE-2026-48784?
This vulnerability affects Symfony's URL generation logic, which improperly handles dot-segment encoding in route parameters. An attacker can supply crafted parameters that cause generated URLs to resolve to unintended application paths after RFC 3986 normalization, potentially exposing sensitive functionality.
Is CVE-2026-48784 being actively exploited?
No, CVE-2026-48784 is not listed in CISA's Known Exploited Vulnerabilities catalog and no public exploits are currently available, though exploitation is theoretically feasible.
What versions of PHP are affected by CVE-2026-48784?
Symfony versions 8.0.0 through 8.0.12 are vulnerable. Earlier affected versions include 5.4.0–5.4.52, 6.4.0–6.4.40, and 7.4.0–7.4.12. The vulnerability resides in the Symfony framework, not PHP itself.
How do I check if my server is vulnerable to CVE-2026-48784?
Run `composer show symfony/routing` to check the version. If it is below 8.0.13 (or 7.4.13, 6.4.41, 5.4.53 for older branches), your installation is vulnerable.
Does Defensia detect CVE-2026-48784?
Yes — Defensia's CVE advisory scanner compares installed package versions against the NVD database. If Symfony is installed on a monitored server, CVE-2026-48784 will appear in your dashboard with remediation steps.
Related PHP CVEs
References
- https://github.com/symfony/symfony/commit/4b63c3a3f7af04ecd79c89a594b0b02a01990b1d
- https://github.com/symfony/symfony/releases/tag/v5.4.53
- https://github.com/symfony/symfony/releases/tag/v6.4.41
- https://github.com/symfony/symfony/releases/tag/v7.4.13
- https://github.com/symfony/symfony/security/advisories/GHSA-h5x3-xfc9-m39h
Track CVEs across your fleet automatically
Defensia scans your Linux servers and tells you exactly which ones are running vulnerable versions — including CVE-2026-48784. Free for 1 server.
Get started free