CVE-2026-45063
Symfony: Identity Spoofing via Unanchored DN Regex in X509Authenticator
Symfony is a PHP framework for web and console applications and a set of reusable PHP components. Prior to 5.4.52, 6.4.40, 7.4.12, and 8.0.12, X509Authenticator extracts the user identifier from $_SERVER['SSL_CLIENT_S_DN'] with an unanchored regex that matches emailAddress= anywhere in the distinguished name, allowing an attacker with a trusted certificate containing emailAddress=victim inside another RDN value such as CN to authenticate as the victim. This issue is fixed in versions 5.4.52, 6.4.40, 7.4.12, and 8.0.12.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- High
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
9.1
Symfony: Identity Spoofing via Unanchored DN Regex in X509Authenticator
Symfony is a PHP framework for web and console applications and a set of reusable PHP components. Prior to 5.4.52, 6.4.40, 7.4.12, and 8.0.12, X509Authenticator extracts the user identifier from $_SERVER['SSL_CLIENT_S_DN'] with an unanchored regex that matches emailAddress= anywhere in the distinguished name, allowing an attacker with a trusted certificate containing emailAddress=victim inside another RDN value such as CN to authenticate as the victim. This issue is fixed in versions 5.4.52, 6.4.40, 7.4.12, and 8.0.12.
- Record
CVE-2026-45063- CVSS 4.0
- 9.1 Critical
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N - Weakness
- CWE-290
- Updated
- 2026-11-02
EUVDEUVD-2026-44347
9.1
Symfony is a PHP framework for web and console applications and a set of reusable PHP components. Prior to 5.4.52, 6.4.40, 7.4.12, and 8.0.12, X509Authenticator extracts the user identifier from $_SERVER['SSL_CLIENT_S_DN'] with an unanchored regex that matches emailAddress= anywhere in the distinguished name, allowing an attacker with a trusted certificate containing emailAddress=victim inside another RDN value such as CN to authenticate as the victim. This issue is fixed in versions 5.4.52, 6.4.40, 7.4.12, and 8.0.12.
- Record
EUVD-2026-44347- CVSS 4.0
- 9.1 Critical
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-ph86-p8f6-f9r2
8.7
Symfony Vulnerable to Identity Spoofing via Unanchored DN Regex in X509Authenticator
Description
X509Authenticator implements client-certificate (mTLS) authentication: the web server validates the client's certificate against a trusted CA, then passes the certificate's Subject DN (Distinguished Name: a string like CN=Alice,O=Example,[email protected]) to Symfony via $_SERVER['SSL_CLIENT_S_DN']. Symfony extracts the user identifier from that string.
The extraction uses an unanchored regex that matches emailAddress= anywhere in the DN string: including inside the value of a different RDN (Relative Distinguished Name: one key=value component of the DN), such as CN. An attacker who can obtain a certificate from a trusted CA with a free-text CN can smuggle emailAddress=victim@target inside the CN value and be authenticated as the victim.
Resolution
The X509Authenticator now uses a regex that anchors the match to an RDN boundary (start of string, or following a , / / separator).
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.
- Record
GHSA-ph86-p8f6-f9r2- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N - Weakness
- CWE-290
- Updated
- 2026-11-02
NVD
9.1
Symfony is a PHP framework for web and console applications and a set of reusable PHP components. Prior to 5.4.52, 6.4.40, 7.4.12, and 8.0.12, X509Authenticator extracts the user identifier from $_SERVER['SSL_CLIENT_S_DN'] with an unanchored regex that matches emailAddress= anywhere in the distinguished name, allowing an attacker with a trusted certificate containing emailAddress=victim inside another RDN value such as CN to authenticate as the victim. This issue is fixed in versions 5.4.52, 6.4.40, 7.4.12, and 8.0.12.
- Record
CVE-2026-45063- CVSS 4.0
- 9.1 Critical
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - CVSS 3.1
- 9.1 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N - Weakness
- CWE-290
- Updated
- 2026-11-02
OSV
9.1
Symfony: Identity Spoofing via Unanchored DN Regex in X509Authenticator
Symfony is a PHP framework for web and console applications and a set of reusable PHP components. Prior to 5.4.52, 6.4.40, 7.4.12, and 8.0.12, X509Authenticator extracts the user identifier from $_SERVER['SSL_CLIENT_S_DN'] with an unanchored regex that matches emailAddress= anywhere in the distinguished name, allowing an attacker with a trusted certificate containing emailAddress=victim inside another RDN value such as CN to authenticate as the victim. This issue is fixed in versions 5.4.52, 6.4.40, 7.4.12, and 8.0.12.
- Record
CVE-2026-45063- CVSS 4.0
- 9.1 Critical
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N - Weakness
- CWE-290
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2026-45063
9.1
Symfony is a PHP framework for web and console applications and a set of reusable PHP components. Prior to 5.4.52, 6.4.40, 7.4.12, and 8.0.12, X509Authenticator extracts the user identifier from $_SERVER['SSL_CLIENT_S_DN'] with an unanchored regex that matches emailAddress= anywhere in the distinguished name, allowing an attacker with a trusted certificate containing emailAddress=victim inside another RDN value such as CN to authenticate as the victim. This issue is fixed in versions 5.4.52, 6.4.40, 7.4.12, and 8.0.12.
- Record
DEBIAN-CVE-2026-45063- CVSS 3.1
- 9.1 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N - Updated
- 2026-11-02
OSVGHSA-ph86-p8f6-f9r2
8.7
Symfony Vulnerable to Identity Spoofing via Unanchored DN Regex in X509Authenticator
Description
X509Authenticator implements client-certificate (mTLS) authentication: the web server validates the client's certificate against a trusted CA, then passes the certificate's Subject DN (Distinguished Name: a string like CN=Alice,O=Example,[email protected]) to Symfony via $_SERVER['SSL_CLIENT_S_DN']. Symfony extracts the user identifier from that string.
The extraction uses an unanchored regex that matches emailAddress= anywhere in the DN string: including inside the value of a different RDN (Relative Distinguished Name: one key=value component of the DN), such as CN. An attacker who can obtain a certificate from a trusted CA with a free-text CN can smuggle emailAddress=victim@target inside the CN value and be authenticated as the victim.
Resolution
The X509Authenticator now uses a regex that anchors the match to an RDN boundary (start of string, or following a , / / separator).
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.
- Record
GHSA-ph86-p8f6-f9r2- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N - Weakness
- CWE-290
- Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-45063
9.1
Symfony is a PHP framework for web and console applications and a set of reusable PHP components. Prior to 5.4.52, 6.4.40, 7.4.12, and 8.0.12, X509Authenticator extracts the user identifier from $_SERVER['SSL_CLIENT_S_DN'] with an unanchored regex that matches emailAddress= anywhere in the distinguished name, allowing an attacker with a trusted certificate containing emailAddress=victim inside another RDN value such as CN to authenticate as the victim. This issue is fixed in versions 5.4.52, 6.4.40, 7.4.12, and 8.0.12.
- Record
UBUNTU-CVE-2026-45063- CVSS 4.0
- 9.1 Critical
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N - CVSS 3.1
- 9.1 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N - Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
symfony/security-httpPackagist |
before 5.4.52 | 5.4.52 |
symfony/security-httpPackagist |
6.0.0-BETA1 up to 6.4.40 | 6.4.40 |
symfony/security-httpPackagist |
7.0.0-BETA1 up to 7.4.12 | 7.4.12 |
symfony/security-httpPackagist |
8.0.0-BETA1 up to 8.0.12 | 8.0.12 |
symfony/symfonyPackagist |
before 5.4.52 | 5.4.52 |
symfony/symfonyPackagist |
6.0.0-BETA1 up to 6.4.40 | 6.4.40 |
symfony/symfonyPackagist |
7.0.0-BETA1 up to 7.4.12 | 7.4.12 |
symfony/symfonyPackagist |
8.0.0-BETA1 up to 8.0.12 | 8.0.12 |
symfonyDebian:12 |
before 5.4.53+dfsg-0+deb12u1, plus listed versions 5.4.23+dfsg-15.4.23+dfsg-1+deb12u15.4.23+dfsg-1+deb12u25.4.23+dfsg-1+deb12u35.4.23+dfsg-1+deb12u4 Show 17 moreShow less5.4.23+dfsg-1+deb12u55.4.24+dfsg-15.4.25+dfsg-15.4.27+dfsg-15.4.28+dfsg-15.4.29+dfsg-15.4.30+dfsg-15.4.31+dfsg-15.4.31+dfsg-25.4.32+dfsg-15.4.33+dfsg-15.4.34+dfsg-15.4.34+dfsg-25.4.35+dfsg-15.4.35+dfsg-25.4.35+dfsg-35.4.52+dfsg-0+deb12u1 |
5.4.53+dfsg-0+deb12u1 |
symfonyDebian:13 |
before 6.4.41+dfsg-0+deb13u1, plus listed versions 6.4.21+dfsg-26.4.21+dfsg-2+deb13u16.4.24+dfsg-16.4.25+dfsg-16.4.40+dfsg-0+deb13u1 |
6.4.41+dfsg-0+deb13u1 |
Show 17 moreShow less
| Package | Affected | Fixed |
|---|---|---|
symfonyDebian:14 |
before 7.4.12+dfsg-1, plus listed versions 6.4.21+dfsg-26.4.24+dfsg-16.4.25+dfsg-17.0.4+dfsg-17.0.5+dfsg-1 Show 45 moreShow less7.0.6+dfsg-17.0.7+dfsg-17.1.0~beta1+dfsg-17.1.0~rc1+dfsg-17.1.2+dfsg-17.1.3+dfsg-17.1.4+dfsg-17.1.5+dfsg-17.2.0~beta1+dfsg-17.2.0~beta2+dfsg-17.2.0~rc1+dfsg-17.2.1+dfsg-17.2.2+dfsg-17.2.3+dfsg-17.2.4+dfsg-17.2.5+dfsg-17.2.6-17.3.0+dfsg-17.3.0~beta1+dfsg-17.3.0~beta2+dfsg-17.3.0~rc1+dfsg-17.3.1+dfsg-17.3.2+dfsg-17.3.3+dfsg-17.3.4+dfsg-17.3.5-17.4.0+dfsg-17.4.0+dfsg-27.4.0~beta1-17.4.0~beta1-27.4.0~beta2+dfsg-17.4.0~beta2+dfsg-27.4.0~beta2+dfsg-37.4.0~rc1+dfsg-17.4.0~rc2+dfsg-17.4.0~rc3+dfsg-17.4.10+dfsg-17.4.2+dfsg-17.4.2+dfsg-27.4.3+dfsg-17.4.4+dfsg-17.4.5+dfsg-17.4.6+dfsg-17.4.6+dfsg-27.4.7+dfsg-1 |
7.4.12+dfsg-1 |
symfony/security-httpPackagist |
before 5.4.52, plus listed versions v2.4.0v2.4.0-BETA1v2.4.0-BETA2v2.4.0-RC1v2.4.1 Show 45 moreShow lessv2.4.10v2.4.2v2.4.3v2.4.4v2.4.5v2.4.6v2.4.7v2.4.8v2.4.9v2.5.0v2.5.0-BETA1v2.5.0-BETA2v2.5.0-RC1v2.5.1v2.5.10v2.5.11v2.5.12v2.5.2v2.5.3v2.5.4v2.5.5v2.5.6v2.5.7v2.5.8v2.5.9v2.6.0v2.6.0-BETA1v2.6.0-BETA2v2.6.1v2.6.10v2.6.11v2.6.12v2.6.13v2.6.2v2.6.3v2.6.4v2.6.5v2.6.6v2.6.7v2.6.8v2.6.9v2.7.0v2.7.0-BETA1v2.7.0-BETA2v2.7.1 |
5.4.52 |
symfony/security-httpPackagist |
6.0.0-BETA1 up to 6.4.40, plus listed versions v6.0.0v6.0.0-BETA1v6.0.0-BETA2v6.0.0-RC1v6.0.1 Show 45 moreShow lessv6.0.10v6.0.11v6.0.12v6.0.13v6.0.14v6.0.15v6.0.17v6.0.19v6.0.2v6.0.20v6.0.3v6.0.5v6.0.7v6.0.8v6.0.9v6.1.0v6.1.0-BETA1v6.1.0-BETA2v6.1.0-RC1v6.1.1v6.1.11v6.1.12v6.1.2v6.1.3v6.1.4v6.1.5v6.1.6v6.1.7v6.1.9v6.2.0v6.2.0-BETA1v6.2.0-BETA3v6.2.0-RC1v6.2.10v6.2.11v6.2.13v6.2.2v6.2.5v6.2.6v6.2.7v6.2.8v6.3.0v6.3.0-BETA1v6.3.0-RC1v6.3.1 |
6.4.40 |
symfony/security-httpPackagist |
7.0.0-BETA1 up to 7.4.12, plus listed versions v7.0.0v7.0.0-BETA1v7.0.0-BETA3v7.0.0-RC1v7.0.0-RC2 Show 45 moreShow lessv7.0.1v7.0.3v7.0.4v7.0.7v7.0.8v7.0.9v7.1.0v7.1.0-BETA1v7.1.0-RC1v7.1.1v7.1.10v7.1.11v7.1.2v7.1.3v7.1.4v7.1.5v7.1.6v7.1.7v7.1.8v7.2.0v7.2.0-BETA1v7.2.0-BETA2v7.2.0-RC1v7.2.1v7.2.3v7.2.4v7.2.6v7.2.7v7.2.8v7.2.9v7.3.0v7.3.0-BETA1v7.3.0-BETA2v7.3.0-RC1v7.3.1v7.3.10v7.3.2v7.3.3v7.3.4v7.3.5v7.3.8v7.3.9v7.4.0v7.4.0-BETA1v7.4.0-RC1 |
7.4.12 |
symfony/security-httpPackagist |
8.0.0-BETA1 up to 8.0.12, plus listed versions v8.0.0v8.0.0-BETA1v8.0.0-RC1v8.0.0-RC2v8.0.1 Show 6 moreShow lessv8.0.11v8.0.3v8.0.4v8.0.6v8.0.8v8.0.9 |
8.0.12 |
symfony/symfonyPackagist |
before 5.4.52, plus listed versions 2.0.42.0.52.0.62.0.7v2.0.10 Show 45 moreShow lessv2.0.11v2.0.12v2.0.13v2.0.14v2.0.15v2.0.16v2.0.17v2.0.18v2.0.19v2.0.20v2.0.21v2.0.22v2.0.23v2.0.24v2.0.25v2.0.9v2.1.0v2.1.0-BETA1v2.1.0-BETA2v2.1.0-BETA3v2.1.0-BETA4v2.1.0-RC1v2.1.0-RC2v2.1.1v2.1.10v2.1.11v2.1.12v2.1.13v2.1.2v2.1.3v2.1.4v2.1.5v2.1.6v2.1.7v2.1.8v2.1.9v2.2.0v2.2.0-BETA1v2.2.0-BETA2v2.2.0-RC1v2.2.0-RC2v2.2.0-RC3v2.2.1v2.2.10v2.2.11 |
5.4.52 |
symfony/symfonyPackagist |
6.0.0-BETA1 up to 6.4.40, plus listed versions v6.0.0v6.0.0-BETA1v6.0.0-BETA2v6.0.0-BETA3v6.0.0-RC1 Show 45 moreShow lessv6.0.1v6.0.10v6.0.11v6.0.12v6.0.13v6.0.14v6.0.15v6.0.16v6.0.17v6.0.18v6.0.19v6.0.2v6.0.20v6.0.3v6.0.4v6.0.5v6.0.6v6.0.7v6.0.8v6.0.9v6.1.0v6.1.0-BETA1v6.1.0-BETA2v6.1.0-RC1v6.1.1v6.1.10v6.1.11v6.1.12v6.1.2v6.1.3v6.1.4v6.1.5v6.1.6v6.1.7v6.1.8v6.1.9v6.2.0v6.2.0-BETA1v6.2.0-BETA2v6.2.0-BETA3v6.2.0-RC1v6.2.0-RC2v6.2.1v6.2.10v6.2.11 |
6.4.40 |
symfony/symfonyPackagist |
7.0.0-BETA1 up to 7.4.12, plus listed versions v7.0.0v7.0.0-BETA1v7.0.0-BETA2v7.0.0-BETA3v7.0.0-RC1 Show 45 moreShow lessv7.0.0-RC2v7.0.1v7.0.10v7.0.2v7.0.3v7.0.4v7.0.5v7.0.6v7.0.7v7.0.8v7.0.9v7.1.0v7.1.0-BETA1v7.1.0-RC1v7.1.1v7.1.10v7.1.11v7.1.2v7.1.3v7.1.4v7.1.5v7.1.6v7.1.7v7.1.8v7.1.9v7.2.0v7.2.0-BETA1v7.2.0-BETA2v7.2.0-RC1v7.2.1v7.2.2v7.2.3v7.2.4v7.2.5v7.2.6v7.2.7v7.2.8v7.2.9v7.3.0v7.3.0-BETA1v7.3.0-BETA2v7.3.0-RC1v7.3.1v7.3.10v7.3.11 |
7.4.12 |
symfony/symfonyPackagist |
8.0.0-BETA1 up to 8.0.12, plus listed versions v8.0.0v8.0.0-BETA1v8.0.0-BETA2v8.0.0-RC1v8.0.0-RC2 Show 12 moreShow lessv8.0.0-RC3v8.0.1v8.0.10v8.0.11v8.0.2v8.0.3v8.0.4v8.0.5v8.0.6v8.0.7v8.0.8v8.0.9 |
8.0.12 |
symfonyUbuntu:16.04:LTS |
All versions, plus listed versions 2.7.1+dfsg-12.7.5+dfsg-12.7.9+dfsg-12.7.9+dfsg-1ubuntu22.7.10-0ubuntu2 |
None known |
symfonyUbuntu:Pro:18.04:LTS |
All versions, plus listed versions 2.8.7+dfsg-1.3ubuntu13.4.3+dfsg-1ubuntu43.4.6+dfsg-13.4.6+dfsg-1ubuntu0.13.4.6+dfsg-1ubuntu0.1+esm13.4.6+dfsg-1ubuntu0.1+esm2 |
None known |
symfonyUbuntu:Pro:20.04:LTS |
All versions, plus listed versions 4.3.4+dfsg-1ubuntu14.3.8+dfsg-1ubuntu14.3.8+dfsg-1ubuntu1+esm14.3.8+dfsg-1ubuntu1+esm2 |
None known |
symfonyUbuntu:Pro:22.04:LTS |
All versions, plus listed versions 5.2.6+dfsg-1ubuntu75.4.4+dfsg-1ubuntu85.4.4+dfsg-1ubuntu8+esm1 |
None known |
symfonyUbuntu:Pro:24.04:LTS |
All versions, plus listed versions 5.4.23+dfsg-1ubuntu15.4.35+dfsg-3ubuntu16.4.5+dfsg-3ubuntu26.4.5+dfsg-3ubuntu36.4.5+dfsg-3ubuntu3+esm1 |
None known |
symfonyUbuntu:25.10 |
All versions, plus listed versions 6.4.18+dfsg-1ubuntu16.4.21+dfsg-26.4.21+dfsg-2ubuntu16.4.24+dfsg-1 |
None known |
symfonyUbuntu:26.10 |
All versions, plus listed versions 7.4.7+dfsg-1ubuntu17.4.9+dfsg-1ubuntu17.4.13+dfsg-2ubuntu17.4.14+dfsg-1ubuntu27.4.15+dfsg-2ubuntu27.4.16+dfsg-1ubuntu2 |
None known |
symfonyUbuntu:26.04:LTS |
All versions, plus listed versions 6.4.24+dfsg-17.4.5+dfsg-1ubuntu17.4.6+dfsg-2ubuntu17.4.7+dfsg-1ubuntu1 |
None known |
History
| Recorded | Changed | Sources |
|---|---|---|
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-45063 is a critical vulnerability (CVSS 9.1) in Sensiolabs Symfony, published May 27, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.34%, the 27th percentile. Fixed in symfony/security-http 5.4.52.
References
github.com/symfony/symfony/security/advisories/GHSA-ph86-p8f6-f9r2
github.com/symfony/symfony/commit/59ef484029601a7af06f5e06c6ed921fdcea5a0d
github.com/symfony/symfony/releases/tag/v5.4.52
github.com/symfony/symfony/releases/tag/v6.4.40
github.com/symfony/symfony/releases/tag/v7.4.12
github.com/symfony/symfony/releases/tag/v8.0.12
Show 12 moreShow less
github.com/symfony/symfony/commit/ccb3f724c7ff55670a6fe3521c7bf1514cceb478
github.com/FriendsOfPHP/security-advisories/blob/master/symfony/security-http/CVE-2026-45063.yaml
github.com/FriendsOfPHP/security-advisories/blob/master/symfony/symfony/CVE-2026-45063.yaml
symfony.com/cve-2026-45063
github.com/advisories/GHSA-ph86-p8f6-f9r2
github.com/CVEProject/cvelistV5/tree/main/cves/2026/45xxx/CVE-2026-45063.json
nvd.nist.gov/vuln/detail/CVE-2026-45063
security-tracker.debian.org/tracker/CVE-2026-45063
github.com/symfony/symfony
ubuntu.com/security/CVE-2026-45063
cve.org/CVERecord?id=CVE-2026-45063
symfony.com/blog/cve-2026-45063-identity-spoofing-via-unanchored-dn-regex-in-x509authenticator
Left out here: 1,150 versions. The JSON record has them.