Miggo Logo

CVE-2024-39912: The FIDO2/Webauthn Support for PHP library allows enumeration of valid usernames

5.3

CVSS Score
3.1

Basic Information

EPSS Score
0.3654%
Published
7/15/2024
Updated
8/4/2024
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
web-auth/webauthn-libcomposer>= 4.5.0, < 4.9.04.9.0
web-auth/webauthn-frameworkcomposer>= 4.5.0, < 4.9.04.9.0

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The vulnerability stems from ProfileBasedCreationOptionsBuilder's getFromRequest method returning empty excluded credentials when a username isn't found. This creates an observable difference in assertion options responses (presence/absence of allowedCredentials) that enables username enumeration. The commit diff shows the vulnerability was addressed by adding a 'hideExistingExcludedCredentials' parameter and conditional logic to return random credentials instead of empty ones. The pre-patch version in 4.5.0-4.8.x lacked this protection, making the original implementation of getFromRequest the vulnerable entry point that exposed credential existence through response discrepancies.

Vulnerable functions

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

WAF Protection Rules

WAF Rule

### Summ*ry T** Pro*il***s**R*qu*stOptions*uil**r m*t*o* r*turns *llow***r***nti*ls wit*out *ny *r***nti*ls i* no us*rn*m* w*s *oun*. ### **t*ils W**n W***ut*n is us** *s t** *irst or only *ut**nti**tion m*t*o*, *n *tt**k*r **n *num*r*t* us*rn*m*s

Reasoning

T** vuln*r**ility st*ms *rom `Pro*il***s***r**tionOptions*uil**r`'s `**t*romR*qu*st` m*t*o* r*turnin* *mpty *x*lu*** *r***nti*ls w**n * us*rn*m* isn't *oun*. T*is *r**t*s *n o*s*rv**l* *i***r*n** in *ss*rtion options r*spons*s (pr*s*n**/**s*n** o* *l