Miggo Logo

CVE-2019-18886:
User enumeration leak using switch user functionality in Symfony

5.3

CVSS Score
3.1

Basic Information

EPSS Score
0.8056%
Published
12/2/2019
Updated
2/1/2023
KEV Status
No
Technology
TechnologyPHP

Technical Details

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
Package NameEcosystemVulnerable VersionsFirst Patched Version
symfony/security-httpcomposer>= 4.1.0, < 4.2.124.2.12
symfony/security-httpcomposer>= 4.3.0, < 4.3.84.3.8
symfony/symfonycomposer>= 4.1.0, < 4.2.124.2.12
symfony/symfonycomposer>= 4.3.0, < 4.3.84.3.8

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot 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.

Vulnerable functions

Only Mi**o us*rs **n s** t*is s**tion

WAF Protection Rules

WAF Rule

*n issu* w*s *is*ov*r** in Sym*ony *.*.* to *.*.** *n* *.*.* to *.*.*. T** **ility to *num*r*t* us*rs w*s possi*l* *u* to *i***r*nt **n*lin* **p*n*in* on w**t**r t** us*r *xist** w**n m*kin* un*ut*oriz** *tt*mpts to us* t** swit** us*rs *un*tion*lity

Reasoning

T** vuln*r**ility st*ms *rom in*onsist*nt *rror **n*lin* in t** us*r swit**in* pro**ss. ***or* p*t**in*, t** `Swit**Us*rList*n*r` woul* *irst ****k *or us*r *xist*n** ***or* ****kin* swit**in* p*rmissions. I* t** us*r *i*n't *xist, it woul* t*row * `