Symfony: HtmlSanitizer URL Parser Deny Gates Underinclusive: Percent-Encoded BiDi Marks…
Key facts
- Attack vector
- Network
- Privileges required
- None
- User interaction
- Passive
- Attack complexity
- Low
- Attack requirements
- None
- Impact type
- Spoofing
- Confidentiality · integrity · availability
- None · None · None
- Fix status
- Fixed
Attack profile from CVSS 4.0 · CNA. Fix status from CNA and GitHub. Impact type from CWE-451.
Summary
Symfony is a PHP framework for web and console applications and a set of reusable PHP components. From 6.1.0 until 6.4.41, 7.4.13, and 8.0.13, UrlSanitizer::parse() rejected raw BiDi formatting characters but not percent-encoded forms and used an ASCII-only whitespace check, allowing sanitized URLs to retain visual-spoofing characters that downstream consumers could decode or display. This issue is fixed in versions 6.4.41, 7.4.13, and 8.0.13.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- None
- Automatable
- No
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| symfony | symfony | 6.1.0 to before 6.4.41; 7.0.0-BETA1 to before 7.4.13; 8.0.0-BETA1 to before 8.0.13 | 6.4.41, 7.4.13, 8.0.13 | Patch available | CNA |
| symfony | html-sanitizer | 6.1.0 to before 6.4.41; 7.0.0-BETA1 to before 7.4.13; 8.0.0-BETA1 to before 8.0.13 | 6.4.41, 7.4.13, 8.0.13 | Patch available | CNA |
| — | symfony/html-sanitizer (Packagist) | 6.1.0 to before 6.4.41 | 6.4.41 | Patch available | GHSA-v3wm-qf9p-c549 |
| — | symfony/html-sanitizer (Packagist) | 7.0.0 to before 7.4.13 | 7.4.13 | Patch available | GHSA-v3wm-qf9p-c549 |
| — | symfony/html-sanitizer (Packagist) | 8.0.0 to before 8.0.13 | 8.0.13 | Patch available | GHSA-v3wm-qf9p-c549 |
| — | symfony/symfony (Packagist) | 6.1.0 to before 6.4.41 | 6.4.41 | Patch available | GHSA-v3wm-qf9p-c549 |
| — | symfony/symfony (Packagist) | 7.0.0 to before 7.4.13 | 7.4.13 | Patch available | GHSA-v3wm-qf9p-c549 |
| — | symfony/symfony (Packagist) | 8.0.0 to before 8.0.13 | 8.0.13 | Patch available | GHSA-v3wm-qf9p-c549 |
- symfony Vendorsymfony Affected 6.1.0 to before 6.4.41; 7.0.0-BETA1 to before 7.4.13; 8.0.0-BETA1 to before 8.0.13 Fixed in 6.4.41, 7.4.13, 8.0.13 Patch available CNA
- html-sanitizer Vendorsymfony Affected 6.1.0 to before 6.4.41; 7.0.0-BETA1 to before 7.4.13; 8.0.0-BETA1 to before 8.0.13 Fixed in 6.4.41, 7.4.13, 8.0.13 Patch available CNA
- symfony/html-sanitizer (Packagist) Vendor— Affected 6.1.0 to before 6.4.41 Fixed in 6.4.41 Patch available GHSA-v3wm-qf9p-c549
- symfony/html-sanitizer (Packagist) Vendor— Affected 7.0.0 to before 7.4.13 Fixed in 7.4.13 Patch available GHSA-v3wm-qf9p-c549
- symfony/html-sanitizer (Packagist) Vendor— Affected 8.0.0 to before 8.0.13 Fixed in 8.0.13 Patch available GHSA-v3wm-qf9p-c549
- symfony/symfony (Packagist) Vendor— Affected 6.1.0 to before 6.4.41 Fixed in 6.4.41 Patch available GHSA-v3wm-qf9p-c549
- symfony/symfony (Packagist) Vendor— Affected 7.0.0 to before 7.4.13 Fixed in 7.4.13 Patch available GHSA-v3wm-qf9p-c549
- symfony/symfony (Packagist) Vendor— Affected 8.0.0 to before 8.0.13 Fixed in 8.0.13 Patch available GHSA-v3wm-qf9p-c549
CPE configurations NVD · 1
| CPE | Versions | Role | Vendor |
|---|---|---|---|
| cpe:2.3:a:sensiolabs:symfony:*:*:*:*:*:*:*:* | 6.1.0 to before 6.4.41; 7.0.0 to before 7.4.13; 8.0.0 to before 8.0.13 | Vulnerable | sensiolabs |
- cpe:2.3:a:sensiolabs:symfony:*:*:*:*:*:*:*:* Versions 6.1.0 to before 6.4.41; 7.0.0 to before 7.4.13; 8.0.0 to before 8.0.13 Vulnerable ·sensiolabs
Remediation
- Fix · CNA symfony (symfony) Fixed in 6.4.41, 7.4.13, 8.0.13
- Fix · CNA html-sanitizer (symfony) Fixed in 6.4.41, 7.4.13, 8.0.13
- Fix · GHSA-v3wm-qf9p-c549 symfony/html-sanitizer (Packagist) Fixed in 6.4.41 Advisory →
- Fix · GHSA-v3wm-qf9p-c549 symfony/html-sanitizer (Packagist) Fixed in 7.4.13 Advisory →
- Fix · GHSA-v3wm-qf9p-c549 symfony/html-sanitizer (Packagist) Fixed in 8.0.13 Advisory →
- Fix · GHSA-v3wm-qf9p-c549 symfony/symfony (Packagist) Fixed in 6.4.41 Advisory →
- Fix · GHSA-v3wm-qf9p-c549 symfony/symfony (Packagist) Fixed in 7.4.13 Advisory →
- Fix · GHSA-v3wm-qf9p-c549 symfony/symfony (Packagist) Fixed in 8.0.13 Advisory →
Timeline
- 2026-10-02 Threatist record created from CVE-2026-48760
- 2026-10-03 Alias added: GHSA-v3wm-qf9p-c549
References
Patch 2
Other 7
- 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/releases/tag/v8.0.13
- https://github.com/FriendsOfPHP/security-advisories/blob/master/symfony/html-sanitizer/CVE-2026-48760.yaml
- https://github.com/FriendsOfPHP/security-advisories/blob/master/symfony/symfony/CVE-2026-48760.yaml
- https://github.com/symfony/symfony
- https://symfony.com/cve-2026-48760
More symfony vulnerabilities
- TI-2024-33775 Ability to change environment from query in symfony/runtime CVSS 3.1HIGH 7.3
- TI-2026-34283 Twig: The `spaceless` filter implicitly marks its output as safe CVSS 4.0MEDIUM 5.1
- TI-2022-07667 Code injection in Twig CVSS 3.1CRITICAL 9.8
- TI-2018-10028 Twig before 2.4.4 allows Server-Side Template Injection (SSTI) via the search search_key… CVSS 3.0CRITICAL 9.8
- TI-2026-35851 Incorrect authorization in symfony CVSS 4.0HIGH 8.7
- TI-2026-35264 Improper input validation in symfony CVSS 4.0HIGH 8.3
Sources
- CVE-2026-48760 · CVE Program
- CVE-2026-48760 · NVD
- FIRST EPSS
- GHSA-v3wm-qf9p-c549 · GitHub Advisory Database · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences