Advisory Database
  • Advisories
  • Dependency Scanning
  1. composer
  2. ›
  3. symfony/html-sanitizer
  4. ›
  5. CVE-2026-48760

CVE-2026-48760: Symfony: HtmlSanitizer URL Parser Deny Gates Underinclusive: Percent-Encoded BiDi Marks and Unicode Whitespace Bypass Visual-Spoofing Defense

June 15, 2026

Symfony\Component\HtmlSanitizer\TextSanitizer\UrlSanitizer::parse() rejects URLs containing raw Unicode explicit-direction BiDi formatting characters (U+202A–U+202E, U+2066–U+2069) as a defense against visual-spoofing of the rendered href. The check covers only the raw UTF-8 forms of those code points: the percent-encoded forms (%E2%80%AE for U+202E, %E2%81%A6 for U+2066, etc.) are not matched by the deny regex, survive league/uri’s parse/build cycle, and are re-emitted unchanged in the sanitized URL. Any downstream consumer that decodes the link before display — phishing-detection filters that compare urldecode($href) against a domain allow-list, audit-log dashboards that show a decoded form for readability, hover-tooltip previews, federated/syndicated content where the decoder lives on the consuming side — restores the BiDi character and the visual spoof that the original defense was filed to prevent.

The same UrlSanitizer::parse() carries an ASCII-only /\s/ whitespace check (no /u modifier) intended as a backstop against malformed URLs. Without the /u modifier, PCRE’s \s matches only ASCII whitespace, so Unicode whitespace characters — NBSP (U+00A0), the zero-width no-break space / BOM (U+FEFF), line/paragraph separators (U+2028, U+2029), ogham space (U+1680), the U+2000–U+200A en/em quad family, narrow / medium / ideographic spaces (U+202F, U+205F, U+3000) and NEL (U+0085) — pass through unchanged in both raw and percent-encoded forms. In hostname positions they enable lookalike spoofs (example<NBSP>.com); in path/query/fragment they enable allow-list drift when a downstream consumer strips whitespace before comparison.

References

  • github.com/FriendsOfPHP/security-advisories/blob/master/symfony/html-sanitizer/CVE-2026-48760.yaml
  • github.com/FriendsOfPHP/security-advisories/blob/master/symfony/symfony/CVE-2026-48760.yaml
  • github.com/advisories/GHSA-v3wm-qf9p-c549
  • github.com/symfony/symfony/commit/b21a626fd90f5c12d2db432c629eed3e780ba2f8
  • github.com/symfony/symfony/security/advisories/GHSA-v3wm-qf9p-c549
  • nvd.nist.gov/vuln/detail/CVE-2026-48760
  • symfony.com/cve-2026-48760

Code Behaviors & Features

Detect and mitigate CVE-2026-48760 with GitLab Dependency Scanning

Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Learn more about Dependency Scanning →

Affected versions

All versions starting from 6.1.0 before 6.4.41, all versions starting from 7.0.0 before 7.4.13, all versions starting from 8.0.0 before 8.0.13

Fixed versions

  • 6.4.41
  • 7.4.13
  • 8.0.13

Solution

Upgrade to versions 6.4.41, 7.4.13, 8.0.13 or above.

Weakness

  • CWE-1007: Insufficient Visual Distinction of Homoglyphs Presented to User
  • CWE-451: User Interface (UI) Misrepresentation of Critical Information

Source file

packagist/symfony/html-sanitizer/CVE-2026-48760.yml

Spotted a mistake? Edit the file on GitLab.

  • Site Repo
  • About GitLab
  • Terms
  • Privacy Statement
  • Contact

Page generated Tue, 23 Jun 2026 12:23:17 +0000.