Symfony: HtmlSanitizer URL Parser Deny Gates Underinclusive: Percent-Encoded BiDi Marks and Unicode Whitespace Bypass Visual-Spoofing Defense
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.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-48760
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 2 Nov 2026, 18:25 UTC · Revision 1
Source evidence
Symfony: HtmlSanitizer URL Parser Deny Gates Underinclusive: Percent-Encoded BiDi Marks and Unicode Whitespace Bypass Visual-Spoofing Defense
core-osv · Original sourcePublished 14 Jul 2026, 19:11 UTC
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.
osv:CVE-2026-48760
Complete source record
{
"id": "b777032b8e3e35c806c2c1ecc751c7012ad38c8b86cf70ccae6768aa305813f6",
"url": "https://osv.dev/vulnerability/CVE-2026-48760",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "Symfony: HtmlSanitizer URL Parser Deny Gates Underinclusive: Percent-Encoded BiDi Marks and Unicode Whitespace Bypass Visual-Spoofing Defense",
"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.",
"evidence": "osv:CVE-2026-48760",
"products": [],
"severity": "medium",
"structured": {
"id": "CVE-2026-48760",
"aliases": [
"CVE-2026-48760",
"GHSA-v3wm-qf9p-c549"
],
"metrics": [
{
"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"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/symfony/security-http",
"type": "GIT",
"events": [
{
"introduced": "7350abfec0228dabb8dafde17d8a821f65c6dd4f"
},
{
"fixed": "1a01cd7a6313d5a375480e0d1d4a0ddf834ae12b"
},
{
"introduced": "f84d7d3c93e6a884908402775199b1f7d55c7be1"
},
{
"fixed": "da3c28025a664e6a88e1af104a74457d99301161"
},
{
"introduced": "bea6dc79db4d95c34b77ec27273d812aa64d65be"
},
{
"fixed": "ca895c1303cc1d290f190cd7301d48fcef9e73e5"
}
],
"database_specific": {
"extracted_events": [
{
"cpe": "cpe:2.3:a:sensiolabs:symfony:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "6.1.0"
},
{
"fixed": "6.4.41"
}
],
"source": "CPE_RANGE"
},
{
"cpe": "cpe:2.3:a:sensiolabs:symfony:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "7.0.0"
},
{
"fixed": "7.4.13"
}
],
"source": "CPE_RANGE"
},
{
"cpe": "cpe:2.3:a:sensiolabs:symfony:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "8.0.0"
},
{
"fixed": "8.0.13"
}
],
"source": "CPE_RANGE"
}
]
}
},
{
"repo": "https://github.com/symfony/symfony",
"type": "GIT",
"events": [
{
"introduced": "c149a0868823d1b0cc01052f4031af2d507c7c9c"
},
{
"fixed": "14ff191853ad60d640c0853b4f17fc0f3b4de0ae"
},
{
"introduced": "d78c5f403d7ee794993660b1d5155536edd36fc1"
},
{
"fixed": "d9981b6e4c77b97472845a9b7fcba5507208aacc"
},
{
"introduced": "2e913a829cfbbf9cb38b321bdff1806b44b192eb"
},
{
"fixed": "ad82cb517407582bb697e079c5ee62bf8b7af3b7"
},
{
"fixed": "b21a626fd90f5c12d2db432c629eed3e780ba2f8"
}
],
"database_specific": {
"extracted_events": [
{
"cpe": "cpe:2.3:a:sensiolabs:symfony:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "6.1.0"
},
{
"fixed": "6.4.41"
}
],
"source": "CPE_RANGE"
},
{
"cpe": "cpe:2.3:a:sensiolabs:symfony:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "7.0.0"
},
{
"fixed": "7.4.13"
}
],
"source": "CPE_RANGE"
},
{
"cpe": "cpe:2.3:a:sensiolabs:symfony:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "8.0.0"
},
{
"fixed": "8.0.13"
}
],
"source": "CPE_RANGE"
},
{
"range": [
{
"fixed": "b21a626fd90f5c12d2db432c629eed3e780ba2f8"
}
],
"source": "REFERENCES_COMMIT"
},
{
"range": [
{
"fixed": "14ff191853ad60d640c0853b4f17fc0f3b4de0ae"
}
],
"source": "REFERENCES_TAG",
"original_tag": "v6.4.41"
},
{
"range": [
{
"fixed": "d9981b6e4c77b97472845a9b7fcba5507208aacc"
}
],
"source": "REFERENCES_TAG",
"original_tag": "v7.4.13"
},
{
"range": [
{
"fixed": "ad82cb517407582bb697e079c5ee62bf8b7af3b7"
}
],
"source": "REFERENCES_TAG",
"original_tag": "v8.0.13"
}
]
}
}
],
"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"
}
}
],
"modified": "2026-10-28T02:30:21.816086002Z",
"provider": "osv",
"references": [
"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/CVEProject/cvelistV5/tree/main/cves/2026/48xxx/CVE-2026-48760.json",
"https://github.com/symfony/symfony/security/advisories/GHSA-v3wm-qf9p-c549",
"https://nvd.nist.gov/vuln/detail/CVE-2026-48760",
"https://github.com/symfony/symfony/commit/b21a626fd90f5c12d2db432c629eed3e780ba2f8"
],
"provider_metadata": {
"cwe_ids": [
"CWE-1007",
"CWE-451"
],
"cna_assigner": "GitHub_M",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/48xxx/CVE-2026-48760.json"
}
},
"related_cves": [
{
"value": "CVE-2026-48760",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 488267,
"published_at": "2026-07-14T19:11:42.179+00:00"
}