CVE-2019-18886:
User enumeration leak using switch user functionality in Symfony
5.3
CVSS Score
3.1
Basic Information
CVE ID
GHSA ID
EPSS Score
0.8056%
CWE
Published
12/2/2019
Updated
2/1/2023
KEV Status
No
Technology
PHP
Technical Details
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
Package Name | Ecosystem | Vulnerable Versions | First Patched Version |
---|---|---|---|
symfony/security-http | composer | >= 4.1.0, < 4.2.12 | 4.2.12 |
symfony/security-http | composer | >= 4.3.0, < 4.3.8 | 4.3.8 |
symfony/symfony | composer | >= 4.1.0, < 4.2.12 | 4.2.12 |
symfony/symfony | composer | >= 4.3.0, < 4.3.8 | 4.3.8 |
Vulnerability Intelligence
Miggo AI
Root Cause Analysis
The vulnerability stems from inconsistent error handling in the user switching process. Before patching, the SwitchUserListener
would first check for user existence before checking switching permissions. If the user didn't exist, it would throw a UsernameNotFoundException
(potentially resulting in 404), while existing but unauthorized attempts threw AccessDeniedException
(403). The fix in 4.2.12/4.3.8
standardized this to always throw AccessDeniedException
regardless of user existence, as confirmed by Symfony
's security advisory and commit messages referencing the SwitchUserListener
changes.