Skip to content

Symfony has a UrlGenerator Route-Requirement Bypass via Unanchored Regex Alternation → Off-Site //host URL Injection

Moderate severity GitHub Reviewed Published May 20, 2026 in symfony/symfony • Updated May 27, 2026

Package

composer symfony/routing (Composer)

Affected versions

< 5.4.52
>= 6.0.0, < 6.4.40
>= 7.0.0, < 7.4.12
>= 8.0.0, < 8.0.12

Patched versions

5.4.52
6.4.40
7.4.12
8.0.12
composer symfony/symfony (Composer)
< 5.4.52
>= 6.0.0, < 6.4.40
>= 7.0.0, < 7.4.12
>= 8.0.0, < 8.0.12
5.4.52
6.4.40
7.4.12
8.0.12

Description

Description

Symfony routes can declare a requirements regex per path parameter, e.g. a route /{_locale}/blog with requirements: { _locale: 'en|fr|de' }. The Twig path() / url() helpers (backed by UrlGenerator) validate supplied parameter values against that regex before building the URL.

UrlGenerator constructs the validation pattern as '#^'.$req.'$#', where $req is the raw requirement string. For a requirement expressed as an alternation, e.g. _locale: 'ar|bg|...|vi|...|zh_CN' (very common), ^ and $ anchor only the first and last alternatives, so any middle alternative matches as an unanchored substring. A value like /evil.com satisfies the requirement (because it contains vi), and the generated path becomes //evil.com/...: a protocol-relative URL the browser navigates off-site.

Resolution

The UrlGenerator class now wraps the requirement in a non-capturing group so the ^ and $ anchors apply to the whole alternation.

The patch for this issue is available here for branch 5.4.

Credits

Symfony would like to thank Claude Mythos Preview (via Project Glasswing) for reporting the issue and providing the fix.

References

@nicolas-grekas nicolas-grekas published to symfony/symfony May 20, 2026
Published to the GitHub Advisory Database May 27, 2026
Reviewed May 27, 2026
Last updated May 27, 2026

Severity

Moderate

EPSS score

Weaknesses

Incorrect Regular Expression

The product specifies a regular expression in a way that causes data to be improperly matched or compared. Learn more on MITRE.

URL Redirection to Untrusted Site ('Open Redirect')

The web application accepts a user-controlled input that specifies a link to an external site, and uses that link in a redirect. Learn more on MITRE.

CVE ID

CVE-2026-45065

GHSA ID

GHSA-72xp-p242-47p9

Source code

Loading Checking history
See something to contribute? Suggest improvements for this vulnerability.