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·22 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

•39 minutes ago•CVE-2026-58426
9.6

CVE-2026-58426: Cryptographic Boundary-Shifting in Gitea Actions Artifacts

CVE-2026-58426 is a critical security vulnerability in Gitea Actions where improper signature serialization allows an authenticated attacker to execute a canonicalization (boundary-shifting) attack. By rewriting query parameters while keeping the signature intact, the attacker can bypass access control checks to read private workflow artifacts or modify concurrent task upload states.

Alon Barad
Alon Barad
1 views•6 min read
•about 2 hours ago•GHSA-2F96-G7MH-G2HX
8.8

GHSA-2F96-G7MH-G2HX: Command Injection Bypass in GitPython Options Validation

GitPython prior to version 3.1.51 contains a command injection vulnerability due to flaws in its option validation routine. By exploiting Git's native argument parser behavior, specifically long-option abbreviation resolution and short-option clustering, attackers can bypass the check_unsafe_options blocklist to execute arbitrary OS commands.

Amit Schendel
Amit Schendel
3 views•5 min read
•about 3 hours ago•CVE-2026-59879
8.7

CVE-2026-59879: Infinite Loop and Integer Overflow in Immutable.js List Sizing

CVE-2026-59879 describes a critical integer overflow vulnerability in the Immutable.js library when handling indices near 32-bit boundaries. An attacker can leverage this flaw to cause a denial of service via CPU thread lockup or process crashes, as well as data corruption through silent size truncation.

Amit Schendel
Amit Schendel
5 views•8 min read
•about 4 hours ago•CVE-2026-54291
8.2

CVE-2026-54291: Silent Channel-Binding Authentication Downgrade in PostgreSQL JDBC Driver (pgjdbc)

A critical security bypass and algorithm downgrade vulnerability in the PostgreSQL JDBC Driver (pgjdbc) allows Man-in-the-Middle (MITM) attackers to silently bypass channel binding requirements. When configured with `channelBinding=require`, the driver fails to assert that the negotiated SCRAM mechanism utilizes channel binding, allowing downgrade to plain SCRAM-SHA-256 when encountering unsupported server certificate signature algorithms (such as Ed25519 or Ed448).

Alon Barad
Alon Barad
5 views•7 min read
•about 5 hours ago•CVE-2026-56170
7.5

CVE-2026-56170: Remote Denial of Service via Resource Exhaustion in ASP.NET Core

CVE-2026-56170 is a high-severity Remote Denial of Service (DoS) vulnerability in Microsoft's ASP.NET Core framework. The vulnerability spans three separate resource-management vectors within the ASP.NET Core ecosystem, including SignalR Stateful Reconnect allocations, JSON Patch Type Confusion leading to stack exhaustion, and Kestrel HTTP/2 synchronization issues. An unauthenticated remote attacker can exploit these issues to cause process-terminating exceptions, rendering applications unavailable.

Amit Schendel
Amit Schendel
5 views•7 min read
•about 6 hours ago•GHSA-8WHX-365G-H9VV
2.3

GHSA-8whx-365g-h9vv: HTML5 Named Whitespace Bypass in Loofah allowed_uri? Validation

The Loofah Ruby gem version 2.25.0 and 2.25.1 contains an incomplete validation vulnerability in its public string-level utility Loofah::HTML5::Scrub.allowed_uri?. This helper fails to detect 'javascript:' URIs that are split by HTML5 named whitespace character references such as 	 and 
. Applications manually invoking this utility to validate links are vulnerable to stored Cross-Site Scripting (XSS), as browsers parse and remove these entities during rendering.

Alon Barad
Alon Barad
4 views•7 min read