Miggo Logo

CVE-2021-29487: October CMS auth bypass and account takeover

7.4

CVSS Score
3.1

Basic Information

EPSS Score
0.6511%
Published
8/30/2021
Updated
1/29/2023
KEV Status
No
Technology
TechnologyPHP

Technical Details

CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
Package NameEcosystemVulnerable VersionsFirst Patched Version
october/systemcomposer< 1.0.4721.0.472
october/systemcomposer>= 1.1.1, < 1.1.51.1.5

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The core vulnerability stems from improper type comparisons in authentication checks. The patch commits show multiple instances where loose equality operators (==) were replaced with strict comparisons (===) and values were explicitly cast to integers. The most critical appears in checkPersistCode() which handles persistent session cookies. Loose comparison here would allow type juggling (e.g., 0 == '0abc') enabling forged cookies. The hasPermission() changes suggest secondary authorization weaknesses. Both functions directly relate to the described auth bypass via manipulated cookies when combined with Laravel's encryption key.

Vulnerable functions

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

WAF Protection Rules

WAF Rule

### Imp**t *n *tt**k*r **n *xploit t*is vuln*r**ility to *yp*ss *ut**nti**tion usin* * sp**i*lly *r**t** p*rsist *ooki*. - To *xploit t*is vuln*r**ility, *n *tt**k*r must o*t*in * L*r*v*l’s s**r*t k*y *or *ooki* *n*ryption *n* si*nin*. - *u* to t**

Reasoning

T** *or* vuln*r**ility st*ms *rom improp*r typ* *omp*risons in *ut**nti**tion ****ks. T** p*t** *ommits s*ow multipl* inst*n**s w**r* loos* *qu*lity op*r*tors (==) w*r* r*pl**** wit* stri*t *omp*risons (===) *n* v*lu*s w*r* *xpli*itly **st to int***r