CVE-2025-13888
vulnerability analysis and mitigation

Overview

CVE-2025-13888 is a privilege escalation vulnerability in Red Hat OpenShift GitOps, classified as "Namespace Admin Cluster Takeover via Privileged Jobs." Authenticated namespace admins can create malicious ArgoCD Custom Resources (CRs) that manipulate the GitOps operator into granting elevated permissions across other namespaces — including privileged ones — ultimately enabling root access to the entire Kubernetes cluster. The vulnerability affects the github.com/redhat-developer/gitops-operator Go module versions prior to 1.16.2, and was publicly disclosed on December 15, 2025. It carries a CVSS v3.1 base score of 9.1 (Critical) (Red Hat Advisory, Github Advisory).

Technical details

The root cause is CWE-266 (Incorrect Privilege Assignment): the OpenShift GitOps operator fails to adequately validate the spec.sourceNamespaces field in ArgoCD CRs, allowing a namespace admin to specify arbitrary target namespaces — even those not yet labeled for management. When the operator processes the CR, it annotates the specified sourceNamespace with argocd.argoproj.io/managed-by-cluster-argocd: <attacker-namespace> and creates a Role and RoleBinding in that namespace, granting the attacker's ArgoCD ServiceAccounts (argocd-server and argocd-application-controller) the ability to create Jobs and CronJobs there. If the targeted namespace (e.g., default) has the privileged Security Context Constraint (SCC), the attacker can extract ServiceAccount tokens and use them to schedule privileged Jobs that run on master nodes (Red Hat Bugzilla, Github Advisory).

Impact

Successful exploitation grants an authenticated namespace admin full root access to master nodes and effectively complete control over the entire OpenShift cluster. The attacker can compromise confidentiality (access secrets and sensitive data across all namespaces), integrity (modify or delete workloads and configurations cluster-wide), and availability (disrupt or destroy cluster services). The scope change (S:C in CVSS) reflects that the impact extends far beyond the attacker's own namespace to the entire cluster infrastructure (Red Hat Advisory, Github Advisory).

Exploitability

No public proof-of-concept exploit code or evidence of in-the-wild exploitation has been reported as of the disclosure date (Red Hat Advisory). The EPSS score is approximately 0.047–0.051%, placing it in the 16th percentile for near-term exploitation likelihood (Github Advisory). The vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog. Exploitation requires an authenticated attacker with namespace admin privileges, which limits the attack surface but does not eliminate risk in multi-tenant OpenShift environments.

Exploitation steps

  1. Gain namespace admin access: Obtain or already possess namespace admin privileges (e.g., via a RoleBinding to the admin ClusterRole) in a target OpenShift cluster running a vulnerable version of OpenShift GitOps.
  2. Create a malicious ArgoCD CR: In the attacker-controlled namespace, create an ArgoCD Custom Resource specifying a privileged target namespace (e.g., default) in spec.sourceNamespaces, even if that namespace does not yet carry the managed-by label.
  3. Trigger operator processing: The GitOps operator processes the CR, annotates the target namespace with argocd.argoproj.io/managed-by-cluster-argocd: <attacker-namespace>, and creates a Role and RoleBinding in the target namespace granting the attacker's ArgoCD ServiceAccounts (argocd-server, argocd-application-controller) permissions to create Jobs and CronJobs.
  4. Extract ServiceAccount tokens: Retrieve the tokens for the ArgoCD ServiceAccounts now authorized in the privileged target namespace.
  5. Create a privileged Job: Using the extracted tokens, submit a privileged Job (with hostPID: true, privileged: true, and a node selector targeting master nodes) to the target namespace, leveraging the permissive SCC.
  6. Achieve cluster root access: The privileged Job runs on a master node with root privileges, enabling full cluster takeover — including reading secrets, modifying cluster state, or establishing persistence (Red Hat Bugzilla, Github Advisory).

Indicators of compromise

  • Kubernetes API Audit Logs: Creation of ArgoCD CR objects in non-standard namespaces with unexpected spec.sourceNamespaces values pointing to privileged namespaces (e.g., default, kube-system).
  • Kubernetes API Audit Logs: Unexpected Role and RoleBinding creation in privileged namespaces by the GitOps operator ServiceAccount, granting Job/CronJob creation rights to ArgoCD ServiceAccounts.
  • Kubernetes API Audit Logs: Namespace annotation events adding argocd.argoproj.io/managed-by-cluster-argocd to namespaces not intended to be managed by a user-created ArgoCD instance.
  • Kubernetes API Audit Logs: Job or CronJob creation in privileged namespaces (e.g., default) by argocd-server or argocd-application-controller ServiceAccounts.
  • Kubernetes Events: Privileged Pod scheduling on master/control-plane nodes originating from Jobs created by ArgoCD ServiceAccounts.
  • File System / Process (on master nodes): Unexpected privileged container processes running on master nodes, particularly those spawned by Jobs not associated with standard cluster operations.

Mitigation and workarounds

Red Hat has released patched versions addressing CVE-2025-13888 across multiple OpenShift GitOps release streams: v1.18.2 (RHSA-2025:23203), v1.17.3 (RHSA-2025:23206), and v1.16.2 (RHSA-2025:23207 and RHSA-2026:1017). Upgrading to one of these patched versions is the primary recommended remediation. Post-upgrade, Red Hat strongly recommends running the provided audit script (https://github.com/redhat-developer/gitops-operator/tree/master/scripts/audit-namespace-roles) to identify any Roles/RoleBindings that grant unintended cross-namespace access. As interim mitigations, administrators should restrict namespace admin permissions, enforce strict RBAC policies, limit who can create ArgoCD CRs, and monitor custom resource creation activity (Red Hat RHSA-2025:23203, Red Hat RHSA-2025:23206, Github Advisory).

Community reactions

Security media outlets including SecurityOnline, GBHackers, CyberPress, and RedHotCyber covered the vulnerability shortly after disclosure, highlighting the cluster takeover risk. Red Hat issued multiple security advisories (RHSA-2025:23203, RHSA-2025:23206, RHSA-2025:23207) and explicitly recommended a post-upgrade audit of namespace roles, signaling awareness of the operational complexity involved in remediation. The CISA weekly vulnerability bulletin for the week of December 15, 2025 included this CVE. Community discussion on Bluesky and technical blogs noted the severity of the privilege escalation chain, particularly the ability to reach master nodes from a namespace admin role (SecurityOnline, GBHackers, CISA Bulletin).

Additional resources


SourceThis report was generated using AI

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