CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



GHSA-786Q-9HCG-V9FF

CVE-2025-55190: Critical Information Disclosure in Argo CD Project API

Amit Schendel
Amit Schendel
Senior Security Researcher

Mar 18, 2026·6 min read·26 visits

Executive Summary (TL;DR)

Authenticated users with basic `projects, get` permissions can retrieve unsanitized, plain-text credentials for connected Kubernetes clusters and Git repositories via the `/api/v1/projects/{project}/detailed` API endpoint due to a missing object sanitization step.

Argo CD versions 2.13.0 through 3.1.1 suffer from a critical information disclosure vulnerability (CVSS 9.9) in the Project Details API endpoint. Authenticated attackers with standard project-level read access can bypass intended RBAC restrictions to extract plain-text Git repository passwords and Kubernetes cluster bearer tokens.

Vulnerability Overview

Argo CD, a declarative continuous delivery tool for Kubernetes, suffers from a critical information disclosure vulnerability tracked as CVE-2025-55190. The vulnerability resides in the Project Details API endpoint, which is used to retrieve aggregated configurations for specific Argo CD projects. Authenticated users with minimal read access to a project can exploit this flaw to expose sensitive backend credentials.

The exposure occurs because the API endpoint serializes and returns complete backend objects without applying appropriate sanitization filters. Specifically, the system fails to redact authentication materials such as bearer tokens, basic authentication passwords, and Git repository credentials stored within the project scope. This violates the intended Role-Based Access Control (RBAC) boundaries.

As a result, tokens or users possessing only standard projects, get permissions can access secrets they are not explicitly authorized to view. The flaw impacts multiple branches of the Argo CD codebase, spanning versions 2.13.0 through 3.1.1. The severity is marked as critical (CVSS 9.9) due to the low attack complexity and the potential to compromise connected Kubernetes clusters and Git infrastructure.

Root Cause Analysis

The root cause of CVE-2025-55190 is a CWE-200 (Exposure of Sensitive Information to an Unauthorized Actor) flaw located in the data serialization pipeline of the GetDetailedProject API handler. When a client requests the /api/v1/projects/{project}/detailed endpoint, the server retrieves the associated Repository and Cluster data structures from the underlying datastore.

In vulnerable versions, the handler returns these objects directly to the client in their raw, unsanitized state. The standard data models for Kubernetes clusters and Git repositories within Argo CD contain embedded credential fields. For clusters, this includes BearerToken, Password, and ExecProviderConfig. For repositories, it includes raw usernames and passwords used for Git authentication.

The application logic relied on general API access controls rather than explicit, object-level field redaction. Because users with projects, get permissions are legitimately allowed to view the configuration structure of a project, the authorization check passes. The system fails to apply a secondary check or a data transfer object (DTO) transformation to strip the sensitive fields before JSON serialization, resulting in the plain-text disclosure.

Code Analysis

Analysis of commit e8f86101f5378662ae6151ce5c3a76e9141900e8 reveals the exact mechanism used to rectify the missing sanitization. The developers introduced and enforced the usage of .Sanitized() methods on both Repository and Cluster objects within pkg/apis/application/v1alpha1/.

In the vulnerable implementation, the server/project/project.go handler retrieved the cluster list and passed it directly to the response builder. The patch modifies this by explicitly iterating over the retrieved objects and replacing them with their sanitized counterparts before constructing the final response.

// Vulnerable Implementation Pattern
func (s *Server) GetDetailedProject(...) {
    // ... authorization checks ...
    projectClusters, err := s.db.GetProjectClusters(ctx, projectName)
    // projectClusters is appended to the response directly, exposing BearerToken
    response.Clusters = projectClusters
    // ...
}
// Patched Implementation Pattern
func (s *Server) GetDetailedProject(...) {
    // ... authorization checks ...
    projectClusters, err := s.db.GetProjectClusters(ctx, projectName)
    sanitizedClusters := make([]appv1.Cluster, 0)
    for _, c := range projectClusters {
        // The Sanitized() method strips credentials before serialization
        sanitizedClusters = append(sanitizedClusters, *c.Sanitized())
    }
    response.Clusters = sanitizedClusters
    // ...
}

The Sanitized() method for the Cluster struct explicitly acts as an allowlist. It creates a new object and copies over only non-sensitive fields such as Server, Name, and Namespaces. The entire ClusterConfig struct, which houses the sensitive operational tokens, is intentionally omitted from the sanitized struct. This completely mitigates the data leak by severing the data flow from the internal struct to the external API response.

Exploitation Methodology

Exploitation of CVE-2025-55190 requires an attacker to possess a valid authentication token for the Argo CD instance. This token must have at least projects, get permission for one or more projects. The attacker does not need administrative privileges or explicit secrets-access permissions.

The attack sequence begins with the attacker generating or intercepting a valid JSON Web Token (JWT) via the /api/v1/session endpoint. Once authenticated, the attacker issues an HTTP GET request to the /api/v1/projects/{project_name}/detailed API route using the compromised or low-privileged token.

The server processes the request and returns a 200 OK response containing a JSON payload. The attacker parses this JSON response and extracts the repositories and clusters arrays. Within these arrays, the attacker searches for the username, password, and bearerToken keys, which contain the exposed plain-text credentials.

Impact Assessment

The impact of CVE-2025-55190 is classified as critical, as it breaks the isolation boundaries between application developers and infrastructure operators. By exposing BearerToken and Password fields, the vulnerability provides attackers with the exact credentials used by Argo CD to manage external systems.

If an attacker extracts a Kubernetes cluster bearer token, they can authenticate directly to the target cluster's API server. Depending on the privileges assigned to the Argo CD service account in that cluster, the attacker may gain administrative control over the cluster, allowing for arbitrary workload deployment, data exfiltration, or lateral movement across the infrastructure.

Similarly, exposed Git repository credentials allow the attacker to access private source code, infrastructure-as-code (IaC) definitions, and potentially inject malicious commits. This leads directly to supply chain attacks, where compromised configurations are automatically deployed by Argo CD or other continuous integration systems.

The CVSS v3.1 vector CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H accurately reflects this environment-spanning risk. The Scope is Changed (S:C) because the vulnerability in Argo CD directly facilitates the compromise of distinct external entities, namely the managed Kubernetes clusters and upstream Git repositories.

Remediation and Mitigation

To address CVE-2025-55190, administrators must upgrade all Argo CD instances to a patched version immediately. The maintained release branches have been updated to versions 2.13.9, 2.14.16, 3.0.14, and 3.1.2. These versions implement the explicit object sanitization required to protect sensitive fields during API serialization.

Patching the software is only the first phase of remediation. Because the vulnerability allows silent credential extraction without generating specialized audit logs for secret access, administrators must operate under the assumption that all project-scoped repository and cluster credentials stored in vulnerable Argo CD instances have been compromised.

Following the upgrade, organizations must systematically rotate all affected secrets. This includes regenerating Kubernetes service account bearer tokens, resetting Git service account passwords, and replacing any associated SSH private keys used for repository authentication.

As an ongoing defense-in-depth measure, security teams should audit Argo CD RBAC configurations. The principle of least privilege must be strictly enforced, ensuring that standard application developers only hold projects, get permissions for the specific projects they actively manage, thereby minimizing the potential blast radius of compromised developer accounts.

Official Patches

Argo ProjectOfficial GitHub Security Advisory containing patch details and affected versions.

Fix Analysis (1)

Technical Appendix

CVSS Score
9.9/ 10
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
EPSS Probability
7.12%
Top 9% most exploited

Affected Systems

Argo CD

Affected Versions Detail

Product
Affected Versions
Fixed Version
Argo CD
Argo Project
2.13.0 - 2.13.82.13.9
Argo CD
Argo Project
2.14.0 - 2.14.152.14.16
Argo CD
Argo Project
3.0.0 - 3.0.123.0.14
Argo CD
Argo Project
3.1.0-rc1 - 3.1.13.1.2
AttributeDetail
CWE IDCWE-200
Attack VectorNetwork (AV:N)
CVSS Score9.9 (CRITICAL)
EPSS Score7.12%
ImpactHigh (Confidentiality, Integrity, Availability)
Exploit StatusPoC Available
KEV StatusNot Listed

MITRE ATT&CK Mapping

T1552Unsecured Credentials
Credential Access
T1078Valid Accounts
Initial Access
CWE-200
Exposure of Sensitive Information to an Unauthorized Actor

Exposure of Sensitive Information to an Unauthorized Actor

Known Exploits & Detection

GitHub (ProjectDiscovery)Nuclei template for detecting plain-text credentials in the Argo CD detailed project endpoint response.
NucleiDetection Template Available

Vulnerability Timeline

RedHat and other vendors notified of the advisory
2025-09-03
GitHub Advisory (GHSA-786q-9hcg-v9ff) published
2025-09-04
Fix commit merged and patched versions released
2025-09-04
CVE-2025-55190 published to NVD
2025-09-04

References & Sources

  • [1]GitHub Advisory: GHSA-786q-9hcg-v9ff
  • [2]Fix Commit: e8f86101f5378662ae6151ce5c3a76e9141900e8
  • [3]NVD Vulnerability Record: CVE-2025-55190
  • [4]Nuclei Detection Template
Related Vulnerabilities
CVE-2025-55190

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•2 days ago•CVE-2026-11748
6.9

CVE-2026-11748: Unauthenticated LDAP Injection in Central Dogma Server Authentication

An LDAP injection vulnerability exists in the centraldogma-server-auth-shiro module of LY Corporation Central Dogma before version 0.84.0. The search logic dynamically constructs LDAP search filters by interpolating user-provided usernames without escaping RFC 4515 metacharacters. Unauthenticated remote attackers can leverage this flaw to bypass authentication, enumerate directory hierarchies, and access unauthorized resources.

Alon Barad
Alon Barad
13 views•6 min read
•2 days ago•CVE-2026-11746
9.4

CVE-2026-11746: Use of Hard-coded ZooKeeper Replication Secret 'ch4n63m3' in Central Dogma Server

CVE-2026-11746 is a critical vulnerability in Central Dogma Server prior to version 0.84.0, where an embedded ZooKeeper replication secret silently falls back to a publicly known, hard-coded default string ('ch4n63m3'). Remote attackers with access to the replication network can authenticate as legitimate cluster peers, potentially leading to unauthorized data exposure, state manipulation, or complete cluster takeover.

Amit Schendel
Amit Schendel
10 views•6 min read
•2 days ago•CVE-2026-56665
4.2

CVE-2026-56665: Logical Validation Bypass in ZITADEL External JWT Identity Provider

A logical verification flaw in ZITADEL's external JWT Identity Provider validation allows attackers to bypass session expiration checks. If an incoming JWT lacks the 'exp' claim, the system skips validation entirely, creating an indefinitely valid session. This issue has been addressed in versions 3.4.12 and 4.15.2.

Alon Barad
Alon Barad
11 views•7 min read
•2 days ago•CVE-2026-59149
6.5

CVE-2026-59149: Sibling Directory Path Traversal in Mockoon Backend Server

CVE-2026-59149 identifies a directory traversal vulnerability in `@mockoon/commons-server`, the backend mock-server library powering the Mockoon application. The flaw occurs in the path containment validation logic used during raw file response generation. An unauthenticated attacker can exploit this weakness to retrieve arbitrary files from sibling directories sharing a common prefix with the designated static base directory.

Amit Schendel
Amit Schendel
15 views•5 min read
•3 days ago•CVE-2026-59148
8.8

CVE-2026-59148: Unauthenticated Administrative API and CORS Misconfiguration in Mockoon

An in-depth analysis of CVE-2026-59148, a high-severity flaw in Mockoon where unauthenticated administrative endpoints and a wildcard Cross-Origin Resource Sharing (CORS) policy allow remote execution, state poisoning, and credential theft.

Alon Barad
Alon Barad
16 views•6 min read
•3 days ago•CVE-2026-56666
4.8

CVE-2026-56666: Account Takeover via Improper Email Verification in ZITADEL Federated Identity Handler

An improper authentication vulnerability (CWE-287) in ZITADEL's external identity provider handler before version 4.15.3 allows remote attackers to perform complete account takeover. When auto-linking by email is enabled, ZITADEL verifies that the local target account has a verified email address but fails to verify if the external provider confirmed ownership of that same email. Attackers can exploit this by registering an unverified account with a victim's email address on a permissive external provider, leading to unauthorized account binding and persistent access.

Amit Schendel
Amit Schendel
9 views•7 min read