Miggo Logo

CVE-2022-41354: Argo CD authenticated but unauthorized users may enumerate Application names via the API

5.3

CVSS Score
3.1

Basic Information

EPSS Score
0.82024%
Published
3/23/2023
Updated
4/4/2023
KEV Status
No
Technology
TechnologyGo

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
github.com/argoproj/argo-cdgo>= 0.5.0, <= 1.8.7
github.com/argoproj/argo-cd/v2go>= 2.5.0, < 2.5.162.5.16
github.com/argoproj/argo-cd/v2go>= 2.6.0, < 2.6.72.6.7
github.com/argoproj/argo-cd/v2go< 2.4.282.4.28

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The vulnerability stemmed from multiple API endpoints that checked application existence before performing RBAC authorization. The original implementations in server/application/application.go directly fetched application resources using appLister.Applications().Get() or appclientset.Get(), returning 'not found' errors for non-existent applications. This allowed attackers to distinguish between non-existent applications (404) and unauthorized access to existing ones (403). The patched code introduced centralized RBAC-enforced checks (getAppEnforceRBAC/getApplicationEnforceRBAC*) that return uniform 'permission denied' errors regardless of application existence, but the pre-patch versions of these handler functions contained the vulnerable pattern.

Vulnerable functions

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

WAF Protection Rules

WAF Rule

### Imp**t *ll v*rsions o* *r*o ** st*rtin* wit* v*.*.* *r* vuln*r**l* to *n in*orm*tion *is*losur* *u* *llowin* un*ut*oriz** us*rs to *num*r*t* *ppli**tion n*m*s *y insp**tin* *PI *rror m*ss***s. *n *tt**k*r *oul* us* t** *is*ov*r** *ppli**tion n*m

Reasoning

T** vuln*r**ility st*mm** *rom multipl* *PI *n*points t**t ****k** *ppli**tion *xist*n** ***or* p*r*ormin* R*** *ut*oriz*tion. T** ori*in*l impl*m*nt*tions in `s*rv*r/*ppli**tion/*ppli**tion.*o` *ir**tly **t**** *ppli**tion r*sour**s usin* `*ppList*r