CVE-2026-42880
Argo CD vulnerability analysis and mitigation

Overview

CVE-2026-42880 is a missing authorization and data-masking vulnerability in Argo CD's ServerSideDiff gRPC/REST endpoint that allows an attacker with read-only access to extract plaintext Kubernetes Secret data from etcd via the Kubernetes API server's Server-Side Apply dry-run mechanism. It affects Argo CD versions 3.2.0 through 3.2.10 and 3.3.0 through 3.3.8, and was published on May 7, 2026. Patches were released in versions 3.2.11 and 3.3.9. It carries a CVSS v3.1 base score of 9.6 (Critical) (GitHub Advisory).

Technical details

The root cause is a combination of CWE-200 (Exposure of Sensitive Information to an Unauthorized Actor) and CWE-212 (Improper Removal of Sensitive Information Before Storage or Transfer). All other Argo CD endpoints that return Kubernetes resource state (e.g., GetManifests, GetResource, PatchResource) call hideSecretData() to mask secret values, but the ServerSideDiff endpoint constructs its response using raw, unmasked PredictedLive and NormalizedLive states. Normally, a defense layer called removeWebhookMutation() strips non-Argo CD-managed fields from the Server-Side Apply dry-run response; however, this defense is entirely bypassed when an Application has the annotation argocd.argoproj.io/compare-options: IncludeMutationWebhook=true. For extraction to succeed, the target Secret's data fields must be owned by at least one non-Argo CD SSA field manager (e.g., kube-controller-manager), so that the real values survive the SSA dry-run garbage collection and appear unmasked in the API response (GitHub Advisory).

Impact

Any authenticated Argo CD user with application get (read-only) permissions can extract plaintext Kubernetes Secret values — including service account tokens, TLS certificates, database credentials, and API keys — from etcd via the vulnerable endpoint. Because every authenticated Argo CD user has get access through the default role:catch-all policy, the effective attack surface is broad. Successful exploitation can enable lateral movement within the Kubernetes cluster, privilege escalation using extracted service account tokens, and full compromise of downstream systems whose credentials are stored as Kubernetes Secrets (GitHub Advisory).

Exploitability

A fully functional Python proof-of-concept exploit is publicly available in the GitHub Security Advisory, which calls /application.ApplicationService/ServerSideDiff via gRPC-web to retrieve real secret values from etcd. The exploit requires only a valid bearer token (read-only access) and the target application name and project. As of the time of disclosure, there is no evidence of active in-the-wild exploitation, and no threat actor attribution has been reported. The EPSS score is approximately 0.031% (0.000310), and the vulnerability is not currently listed in the CISA KEV catalog (GitHub Advisory, GBHackers).

Exploitation steps

  1. Reconnaissance: Identify Argo CD instances running versions 3.2.0–3.2.10 or 3.3.0–3.3.8. Obtain a valid bearer token with at least read-only (get) access to an Argo CD application — this may be a low-privileged user account.
  2. Enumerate managed resources: Send a GET request to /api/v1/applications/{app_name}/managed-resources with the bearer token to list all Kubernetes resources managed by the target application, filtering for resources of kind: Secret.
  3. Identify exploitable secrets: For each discovered Secret, note its name, namespace, type, and live state JSON. Confirm that the Application has the annotation argocd.argoproj.io/compare-options: IncludeMutationWebhook=true (required for the defense bypass), or attempt the call regardless as the annotation may be set.
  4. Craft gRPC-web request: Build a protobuf-encoded gRPC-web payload targeting /application.ApplicationService/ServerSideDiff, specifying the application name, project, and a minimal target manifest for the Secret (omitting the data field for Opaque secrets, or including placeholder values for TLS/dockerconfigjson types).
  5. Send the request: POST the crafted payload to the Argo CD server with appropriate gRPC-web headers (Content-Type: application/grpc-web+proto, Authorization: Bearer <token>).
  6. Extract plaintext secrets: Parse the gRPC response frames and decode the targetState (field 5 / PredictedLive) JSON. Extract the data field from the Secret object — values that are not masked (i.e., not all + characters) are real base64-encoded secret values read directly from etcd.
  7. Decode and use: Base64-decode the extracted values to obtain plaintext credentials, tokens, or certificates for use in further attacks (GitHub Advisory).

Indicators of compromise

  • Network: Unusual POST requests to /application.ApplicationService/ServerSideDiff with Content-Type: application/grpc-web+proto headers, especially from low-privileged accounts or at high frequency; GET requests to /api/v1/applications/*/managed-resources immediately followed by ServerSideDiff calls.
  • Logs: Argo CD audit logs showing repeated ServerSideDiff API calls by read-only users, particularly targeting applications with the IncludeMutationWebhook=true annotation; access patterns where a single user queries multiple applications' managed resources in rapid succession.
  • Behavioral: Argo CD API calls originating from unexpected source IPs or automated scripts (non-browser user agents); a single account querying ServerSideDiff for many different secrets across multiple namespaces in a short time window (GitHub Advisory).

Mitigation and workarounds

Upgrade Argo CD to version 3.2.11 or 3.3.9, which patch the missing data-masking in the ServerSideDiff endpoint. As an interim workaround, remove or avoid setting the annotation argocd.argoproj.io/compare-options: IncludeMutationWebhook=true on Applications, as this annotation is required to bypass the removeWebhookMutation() defense layer. Additionally, apply the principle of least privilege by restricting Argo CD access to only necessary users, monitor audit logs for anomalous ServerSideDiff calls, and consider network segmentation to limit access to Argo CD API endpoints (GitHub Advisory).

Community reactions

The vulnerability received coverage from several security news outlets including GBHackers, CyberPress, and The Hacker Wire, highlighting the risk of secret extraction via a read-only Argo CD account. Social media activity was observed on Bluesky and Mastodon (infosec.exchange), with the security community noting the severity of the issue given Argo CD's widespread use in Kubernetes GitOps pipelines. The advisory credits researcher hoang-prod for the discovery (GBHackers, The Hacker Wire, CyberPress).

Additional resources


SourceThis report was generated using AI

Related Argo CD vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-42880CRITICAL9.6
  • Argo CD logoArgo CD
  • argocd-fips-3.2
NoYesMay 07, 2026
CVE-2026-45738HIGH8.7
  • Argo CD logoArgo CD
  • argocd-3.4
NoYesJul 15, 2026
CVE-2026-43824HIGH7.7
  • Argo CD logoArgo CD
  • cpe:2.3:a:argoproj:argo_cd
NoYesMay 02, 2026
CVE-2025-59538HIGH7.5
  • Argo CD logoArgo CD
  • github.com/argoproj/argo-cd
NoYesOct 01, 2025
CVE-2026-45737MEDIUM6.5
  • Argo CD logoArgo CD
  • argocd-fips-3.3
NoYesJul 15, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management