Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate with Application get RBAC
-
DeliveryUpload crafted .jsonnet via manifestsWithFiles API
-
ExploitImporter traverses to service-account token or private key
-
ExecutionImported contents returned inside ConfigMap manifest
-
ImpactExfiltrate credentials and pivot within cluster
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Path canonicalization, traversal prevention
MITRE ATT&CK
2 techniques across 2 tactics: Discovery, Collection The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires an authenticated Argo CD account holding at least Application 'get' permission on an existing directory-type Application - notably NOT Application update, sync, or repository write access - because the POST /api/v1/applications/manifestsWithFiles upload path (also reachable via argocd app diff --local --server-side-generate) accepts attacker-supplied .jsonnet. Argo CD's default role:catch-all policy grants get to every authenticated user, lowering the bar substantially on multi-tenant installs. Alternatively, an attacker with write access to a Git repository backing an Application can commit the malicious .jsonnet, since directory Applications evaluate every .jsonnet file in the directory. The flaw only applies where .jsonnet rendering is reachable and is limited to Argo CD versions 0.9.0 through those preceding 3.3.15/3.4.10/3.5.4/3.6.0-rc2; secrets written to generated Kubernetes Secrets are redacted, so the attacker must route stolen data through a non-Secret resource such as a ConfigMap to read it back. |
| Impact | This is a genuine high-priority issue, not a CVSS-inflated one. The provided CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H, 9.9) aligns with the description: a network-reachable repo-server endpoint reachable by any authenticated Argo CD user with only Application 'get' permission (PR:L), requiring no user interaction and no special timing (AC:L). The scope change (S:C) is well justified because arbitrary file read lets the attacker steal projected service-account tokens, mounted private keys and repository credentials - secrets belonging to other security authorities that enable lateral movement across the Kubernetes cluster. The confidentiality and availability impacts are strongly supported (file disclosure plus /dev/zero memory-exhaustion DoS); the integrity (I:H) claim is weaker since the primitive is read/disclosure rather than modification. No EPSS score, KEV listing, or POC indicator is present in the input, so there is no signal of active exploitation or widespread automated attacks - this is a vendor-reported (GitHub Security Advisory) flaw. The low barrier to entry (default role:catch-all grants get, and the upload path needs neither update, sync, nor repo write access) makes exploitation realistic for any tenant on a shared Argo CD instance, which is the primary driver of urgency rather than any observed in-the-wild activity. |
| Exploit ScenarioDerived | A tenant with only read (get) access to an existing directory-type Application on a multi-tenant Argo CD instance crafts a .jsonnet file that uses importstr on an absolute path such as /var/run/secrets/kubernetes.io/serviceaccount/token or a mounted repository credential, and places the imported content inside a ConfigMap. They submit it via POST /api/v1/applications/manifestsWithFiles (or argocd app diff --local --server-side-generate); the repo-server evaluates the file and returns the harvested secret in the rendered manifest. No public exploit identified at time of analysis, though the technique is fully described in the vendor advisory. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 20, 2026
Argo CD's repo-server evaluates .jsonnet files with an importer that is not confined to the repository root, allowing authenticated users who hold only Application 'get' permission to read any file the repo-server can access and to exhaust its memory. Affected deployments are Argo CD 0.9.0 through the releases preceding 3.3.15, 3.4.10, 3.5.4, and 3.6.0-rc2, where absolute paths, parent-directory traversal, and repository symlinks can reach files such as /proc/self/environ, projected service-account tokens, mounted private keys, and repository credentials; stolen data must be routed through a non-Secret resource like a ConfigMap because generated Secrets are redacted, and importstr on a non-terminating device like /dev/zero can cause a denial of service. No public exploit code was identified at time of analysis, but Argo CD's default role:catch-all policy grants Application get to every authenticated user, so the upload path through POST /api/v1/applications/manifestsWithFiles lowers the bar substantially on multi-tenant installations.
RemediationAI
Upgrade to Argo CD 3.3.15, 3.4.10, 3.5.4, or 3.6.0-rc2 (or later) as the primary fix, using the release notes linked above. If immediate upgrade is not possible, disable Argo CD's built-in jsonnet tool detection as described at https://argo-cd.readthedocs.io/en/stable/user-guide/tool_detection/#disable-built-in-tools; this removes the attack surface but will break Applications that rely on jsonnet rendering until the tool is re-enabled, so inventory jsonnet usage first. Restrict who can write .jsonnet files to Git repositories consumed by Applications and audit use of POST /api/v1/applications/manifestsWithFiles and argocd app diff --local --server-side-generate, since the upload path requires only Application get permission on a directory Application; on multi-tenant installs, consider separate Argo CD instances or scoped RBAC for untrusted users, accepting the added operational overhead. Monitor repo-server file access and memory for reads of absolute paths, /proc/self/environ, service-account token paths, or /dev/zero, and treat any observed access as compromise of mounted repository credentials and cluster secrets.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The flaw is a path-traversal weakness (CWE-22) in Argo CD's repo-server jsonnet rendering path. When Argo CD generates manifests for directory-type Applications, it evaluates every .jsonnet file using go-jsonnet's FileImporter configured with JPaths set to the application directory; JPaths only defines search roots for relative imports and does not prevent absolute paths, '../' traversal, or symlink resolution outside the repository, so the jsonnet import, importstr, and importbin functions can open arbitrary files readable by the repo-server process. Because the repo-server runs with a service account and often mounts repository credentials, TLS keys, and projected tokens, the reachable file set includes /proc/self/environ, service-account tokens, private keys, and Git credentials. Argo CD redacts generated Kubernetes Secret values in its API responses, so an attacker must place the imported content into a non-Secret object such as a ConfigMap and read it back through normal resource retrieval. importstr and importbin additionally allow reading non-terminating character devices, and /dev/zero causes unbounded memory consumption in the repo-server. The trigger surface is broad: an attacker who can commit a .jsonnet file to a Git repository backing an Application can exploit it directly, and the same evaluation runs on attacker-supplied files submitted to POST /api/v1/applications/manifestsWithFiles, which is also reachable through argocd app diff --local --server-side-generate. That API path requires only Application get permission on an existing directory Application, not Application update, sync, or repository write access.
Know when Argo Cd gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
Network API reachable by any low-privilege authenticated user (PR:L, AC:L); scope change from stolen service-account tokens/credentials; high confidentiality and DoS impact but no direct integrity modification, so I:N.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. From 0.9.0 until 3.3.15, 3.4.10, 3.5.4, and 3.6.0-rc2, the repo-server evaluates .jsonnet files with an importer that does not confine import, importstr, or importbin to the repository root. Absolute paths, parent-directory traversal, and repository symlinks can open any file readable by the repo-server, including /proc/self/environ, projected service-account tokens, mounted private keys, and repository credentials. Although generated Secrets are redacted, placing imported contents in a ConfigMap returns the data to the caller. Using importstr on a non-terminating device such as /dev/zero can exhaust repo-server memory. An attacker can commit a .jsonnet file to a Git repository used by an Application or upload the file through POST /api/v1/applications/manifestsWithFiles, also exposed by argocd app diff --local --server-side-generate. Directory applications evaluate every .jsonnet file in the application directory. The upload path requires only Application get permission on an existing directory Application, without Application update or sync permission or repository write access. This issue is fixed in versions 3.3.15, 3.4.10, 3.5.4, and 3.6.0-rc2.
Articles & Coverage 1
Technical POC Analysis
The bug is CWE-22: Improper Limitation of a Pathname to a Restricted Directory (Path Traversal).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Argo CD deployments in the affected 0.9.0 through releases preceding 3.3.15, 3.4.10, 3.5.4, and 3.6.0-rc2 ranges expose sensitive credentials and enable service disruption through uncontrolled jsonnet file imports. Because the default role:catch-all policy grants Application 'get' broadly, a low-privileged user can reach service-account tokens, private keys, and repository credentials, making this a supply-chain and secrets-exposure risk that affects CI/CD integrity across teams. No public exploit identified at time of analysis and no vendor-released patch identified at time of analysis, so leadership should prioritize containment and upgrade planning.
No vendor-released patch identified at time of analysis. Interim mitigations: remove or tightly scope Application 'get' from the default role:catch-all and grant it only to trusted users; disable jsonnet rendering where not needed; block POST /api/v1/applications/manifestsWithFiles at ingress/WAF; run repo-server with a read-only root filesystem, minimal service account, no long-lived secrets mounted, and memory limits; use short-lived projected service-account tokens with audience restriction; monitor for anomalous jsonnet imports, ConfigMap writes, and repo-server memory spikes; rotate repository credentials and private keys if exposure is suspected; apply vendor patch when available.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.
Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. Rated critical severity (CVSS 9.9), this vulne
Argo CD is a declarative continuous deployment for Kubernetes. Rated critical severity (CVSS 9.6), this vulnerability is
Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. Rated critical severity (CVSS 9.1), this vulne
Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. Rated critical severity (CVSS 9.0), this vulne
All unpatched versions of Argo CD starting with v1.0.0 are vulnerable to an improper access control bug, allowing a mali
As of v1.5.0, the default admin password is set to the argocd-server pod name. Rated high severity (CVSS 8.8), this vuln
Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. Rated high severity (CVSS 8.3), this vulnerabi
Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. Versions 1.2.0 through 1.8.7, 2.0.0-rc1 throug
Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. Versions 1.2.0 through 1.8.7, 2.0.0-rc1 throug
Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. For versions 2.9.0-rc1 through 2.14.19, 3.0.0-
Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. Rated high severity (CVSS 7.5), this vulnerabi
Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. Rated high severity (CVSS 7.5), this vulnerabi
EUVD-2026-105227
NVD
CVE.org
EPSS
GitHub
VulDB
Exploit-DB