CVE-2022-41354: Argo CD authenticated but unauthorized users may enumerate Application names via the API
5.3
Basic Information
Technical Details
| Package Name | Ecosystem | Vulnerable Versions | First Patched Version |
|---|---|---|---|
| github.com/argoproj/argo-cd | go | >= 0.5.0, <= 1.8.7 | |
| github.com/argoproj/argo-cd/v2 | go | >= 2.5.0, < 2.5.16 | 2.5.16 |
| github.com/argoproj/argo-cd/v2 | go | >= 2.6.0, < 2.6.7 | 2.6.7 |
| github.com/argoproj/argo-cd/v2 | go | < 2.4.28 | 2.4.28 |
Vulnerability Intelligence
Miggo AI
Root 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.