Miggo Logo

CVE-2025-55190: Argo CD's Project API Token Exposes Repository Credentials

10

CVSS Score
3.1

Basic Information

EPSS Score
-
Published
9/4/2025
Updated
9/4/2025
KEV Status
No
Technology
TechnologyGo

Technical Details

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
Package NameEcosystemVulnerable VersionsFirst Patched Version
github.com/argoproj/argo-cd/v2go>= 2.13.0, < 2.13.92.13.9
github.com/argoproj/argo-cd/v2go>= 2.14.0, < 2.14.162.14.16
github.com/argoproj/argo-cd/v3go< 3.0.143.0.14
github.com/argoproj/argo-cd/v3go>= 3.1.0-rc1, < 3.1.23.1.2

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The vulnerability lies in the GetDetailedProject function within server/project/project.go. This function, which serves the /api/v1/projects/{project}/detailed API endpoint, was returning repository and cluster information without redacting sensitive credentials. The provided patch e8f86101f5378662ae6151ce5c3a76e9141900e8 clearly shows that the fix involves iterating through the repositories and clusters and applying a Sanitized() method to each before including them in the API response. This Sanitized() method, modified and introduced in pkg/apis/application/v1alpha1/repository_types.go and pkg/apis/application/v1alpha1/types.go respectively, is responsible for removing the sensitive fields. Therefore, the GetDetailedProject function is the exact location where the vulnerability existed, as it was the function that failed to perform the necessary sanitization, leading to the information disclosure.

Vulnerable functions

project.Server.GetDetailedProject
server/project/project.go
The `GetDetailedProject` function is responsible for handling the `/api/v1/projects/{project}/detailed` API endpoint. Before the patch, this function would retrieve project details, including associated repository and cluster configurations, and return them without proper sanitization. This resulted in the exposure of sensitive credentials (usernames, passwords, tokens) stored in those configurations. The vulnerability is a classic case of missing data sanitization, where an internal data structure containing sensitive information is directly exposed through an API endpoint to users who should not have access to it.

WAF Protection Rules

WAF Rule

### Summ*ry *r*o ** *PI tok*ns wit* proj**t-l*v*l p*rmissions *r* **l* to r*tri*v* s*nsitiv* r*pository *r***nti*ls (us*rn*m*s, p*sswor*s) t*rou** t** proj**t **t*ils *PI *n*point, *v*n w**n t** tok*n only **s st*n**r* *ppli**tion m*n***m*nt p*rmissi

Reasoning

T** vuln*r**ility li*s in t** `**t**t*il**Proj**t` *un*tion wit*in `s*rv*r/proj**t/proj**t.*o`. T*is *un*tion, w*i** s*rv*s t** `/*pi/v*/proj**ts/{proj**t}/**t*il**` *PI *n*point, w*s r*turnin* r*pository *n* *lust*r in*orm*tion wit*out r****tin* s*n