{"id":"CVE-2026-48760","summary":"Symfony: HtmlSanitizer URL Parser Deny Gates Underinclusive: Percent-Encoded BiDi Marks and Unicode Whitespace Bypass Visual-Spoofing Defense","details":"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.","aliases":["GHSA-v3wm-qf9p-c549"],"modified":"2026-07-17T03:47:04.623258954Z","published":"2026-07-14T19:11:42.179Z","database_specific":{"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/48xxx/CVE-2026-48760.json","cna_assigner":"GitHub_M","cwe_ids":["CWE-1007","CWE-451"]},"references":[{"type":"WEB","url":"https://github.com/symfony/symfony/releases/tag/v6.4.41"},{"type":"WEB","url":"https://github.com/symfony/symfony/releases/tag/v7.4.13"},{"type":"WEB","url":"https://github.com/symfony/symfony/releases/tag/v8.0.13"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/48xxx/CVE-2026-48760.json"},{"type":"ADVISORY","url":"https://github.com/symfony/symfony/security/advisories/GHSA-v3wm-qf9p-c549"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-48760"},{"type":"FIX","url":"https://github.com/symfony/symfony/commit/b21a626fd90f5c12d2db432c629eed3e780ba2f8"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/symfony/security-http","events":[{"introduced":"7350abfec0228dabb8dafde17d8a821f65c6dd4f"},{"fixed":"1a01cd7a6313d5a375480e0d1d4a0ddf834ae12b"},{"introduced":"f84d7d3c93e6a884908402775199b1f7d55c7be1"},{"fixed":"da3c28025a664e6a88e1af104a74457d99301161"},{"introduced":"bea6dc79db4d95c34b77ec27273d812aa64d65be"},{"fixed":"ca895c1303cc1d290f190cd7301d48fcef9e73e5"}],"database_specific":{"source":"CPE_RANGE","cpe":"cpe:2.3:a:sensiolabs:symfony:*:*:*:*:*:*:*:*","extracted_events":[{"introduced":"6.1.0"},{"fixed":"6.4.41"},{"introduced":"7.0.0"},{"fixed":"7.4.13"},{"introduced":"8.0.0"},{"fixed":"8.0.13"}]}},{"type":"GIT","repo":"https://github.com/symfony/symfony","events":[{"introduced":"c149a0868823d1b0cc01052f4031af2d507c7c9c"},{"fixed":"14ff191853ad60d640c0853b4f17fc0f3b4de0ae"},{"introduced":"d78c5f403d7ee794993660b1d5155536edd36fc1"},{"fixed":"d9981b6e4c77b97472845a9b7fcba5507208aacc"},{"introduced":"2e913a829cfbbf9cb38b321bdff1806b44b192eb"},{"fixed":"ad82cb517407582bb697e079c5ee62bf8b7af3b7"},{"fixed":"b21a626fd90f5c12d2db432c629eed3e780ba2f8"}],"database_specific":{"extracted_events":[{"introduced":"6.1.0"},{"fixed":"6.4.41"},{"introduced":"7.0.0"},{"fixed":"7.4.13"},{"introduced":"8.0.0"},{"fixed":"8.0.13"}],"source":["CPE_RANGE","REFERENCES"],"cpe":"cpe:2.3:a:sensiolabs:symfony:*:*:*:*:*:*:*:*"}}],"versions":["v8.0.12","v7.4.12","v6.4.40","v6.4.39","v8.0.11","v7.4.11","v7.4.0-BETA1","v8.0.9","v7.4.9","v6.4.34","v8.0.8","v7.4.8","v8.0.6","v7.4.6","v6.4.31","v8.0.4","v7.4.4","v8.0.3","v7.4.3","v8.0.1","v7.4.1","v6.4.30","v7.4.0","v8.0.0","v7.4.0-RC2","v7.4.0-RC1","v6.4.26","v6.4.25","v6.4.24","v6.4.23","v7.3.0","v6.4.22","v7.3.0-RC1","v7.3.0-BETA2","v7.3.0-BETA1","v6.4.21","v6.4.19","v6.4.18","v7.2.1","v6.4.15","v7.2.0-RC1","v7.2.0","v7.2.0-BETA2","v6.4.14","v7.2.0-BETA1","v6.4.13","v6.4.12","v6.4.11","v6.4.9","v6.4.8","v7.1.0-RC1","v7.1.0","v7.1.0-BETA1","v6.4.7","v6.4.4","v6.4.3","v7.0.1","v6.4.0-RC2","v6.4.0","v7.0.0-RC2","v7.0.0","v6.4.0-RC1","v6.4.0-BETA3","v6.4.0-BETA1","v6.3.0-RC1","v6.3.0-BETA1","v6.2.0","v6.2.0-RC1","v6.2.0-BETA3","v6.2.0-BETA1","v6.1.0-RC1","v6.1.0","v8.0.10","v8.0.7","v8.0.5","v8.0.2"],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-48760.json"}}],"schema_version":"1.7.5","severity":[{"type":"CVSS_V4","score":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N"}]}