Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate with Application get permission
-
DeliveryUpload crafted Kustomization via manifestsWithFiles
-
ExploitGit parses leading-hyphen ref as --upload-pack
-
ExecutionExecute command as repo-server user
-
ImpactExfiltrate repo credentials via manifest errors
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Argument sanitization
|
| Exploitation Conditions | Requires an authenticated principal with at least Application get permission on an existing Application (no Application update/sync permission and no repository write access needed) using the POST /api/v1/applications/manifestsWithFiles upload path - also reachable via 'argocd app diff --local --server-side-generate' - OR write access to a Git repository an Application builds. The malicious Kustomization must reference a remote base, component, or resource over a local transport (file://), and the deployment must run Kustomize 5.0.0 or later, which accepts file:// (4.5.7 rejects it); Argo CD bundles Kustomize 5.x by default from 2.7 onward. Limiting factors: exploitation needs authentication and the file:// local-transport path, and https:// remotes do NOT trigger command execution. Note that blocking repo-server egress does NOT mitigate, because the local transport stays inside the pod, and merely swapping in a newer Kustomize does not fix the missing option separator. |
| Impact | This is a genuine high-priority issue, not an inflated CVSS score. The CVSS:3.1 vector (AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H, 9.9) indicates network-reachable, low-complexity, authenticated exploitation with a scope change and full confidentiality/integrity/availability impact - consistent with command execution inside argocd-repo-server. The critical real-world amplifier is the low privilege bar: the manifestsWithFiles upload path requires only Application get permission on an existing Application, with no update, sync, or repository-write rights, so a broad set of low-trust Argo CD users qualifies. No EPSS score, CISA KEV listing, or POC was provided in the input, so there is no public exploit identified at time of analysis and no evidence of active exploitation; the risk here is driven by severity and ease of abuse rather than observed in-the-wild activity. One mitigation that defenders often rely on - blocking repo-server egress - is explicitly ineffective because the file:// local transport never leaves the pod. Net: treat as an urgent patch priority for any Argo CD instance where untrusted or semi-trusted principals hold even read-level Application access. |
| Exploit ScenarioDerived | An attacker holding only Application get permission uploads a crafted Kustomization (a remote base/component/resource URL carrying a leading-hyphen ref or version value over a file:// local transport) via POST /api/v1/applications/manifestsWithFiles, or commits one to a Git repo an Application builds. During manifest generation, git fetch parses the value as --upload-pack and runs the attacker's command as the repo-server user, which can read stored repository credentials and return output through manifest-generation errors. No public exploit was identified in the provided data. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 20, 2026
Argument injection in Argo CD's repo-server allows an authenticated user holding only get permission on an existing Application to run arbitrary commands inside the argocd-repo-server pod. Kustomize forwards ref/version query values from remote base, component or resource URLs straight into git fetch without an end-of-options separator, so a leading-hyphen value is interpreted as --upload-pack and executed whenever the remote uses the local file:// transport; https:// remotes do not trigger execution. Affected releases run from 2.7.0 through the fixed versions 3.3.15, 3.4.10, 3.5.4 and 3.6.0-rc2, and the injected command runs as the repo-server user, exposing repository credentials and other process-readable data with output returned through manifest-generation error messages. No public exploit code or confirmed active exploitation was identified at time of analysis, but the low privilege bar (Application get, no sync or repository write needed via POST /api/v1/applications/manifestsWithFiles) makes this a genuine high-priority issue rather than an inflated score.
RemediationAI
Vendor-released patch: upgrade Argo CD to 3.3.15, 3.4.10, 3.5.4 or 3.6.0-rc2 (or later 3.x), which adds the missing end-of-options separator so leading-hyphen ref/version values are no longer parsed as git options; confirm the exact artifacts and any Kustomize bundling notes in https://github.com/argoproj/argo-cd/releases/tag/v3.3.15, .../v3.4.10, .../v3.5.4 and .../v3.6.0-rc2 and the advisory GHSA-9v9p-x54c-58gc. Patching is the only complete fix - swapping in a newer Kustomize binary does not correct the missing separator, and blocking repo-server egress is explicitly ineffective because the file:// transport never leaves the pod. Where immediate upgrade is not possible, apply compensating controls with awareness of their trade-offs: pin the bundled Kustomize back to 4.5.7 via the custom Kustomize versions mechanism (https://argo-cd.readthedocs.io/en/stable/user-guide/kustomize/#custom-kustomize-versions), which restores rejection of file:// but loses Kustomize 5 features and will break manifests relying on them; tighten RBAC so that the applications get verb - the only permission required for the POST /api/v1/applications/manifestsWithFiles upload path and for 'argocd app diff --local --server-side-generate' - is limited to trusted identities, accepting that ordinary read-only developers will lose diff and local-manifest workflows; filter or disable that API endpoint at the ingress/API-server layer, accepting loss of local manifest generation; and restrict commit access to Git repositories that Applications build, since a committed Kustomization is an equally valid delivery path. Because the injected command can read repository credentials held by argocd-repo-server, treat all Git, Helm and OCI credentials reachable from that pod as potentially compromised if the deployment was exposed to untrusted users, and rotate them after upgrading.
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 classic CWE-88 argument injection in the Kustomize remote-source resolution path used by Argo CD. When a Kustomization declares a remote base, component or resource, Kustomize shells out to git to fetch the referenced repository, carrying the ?ref= or ?version= query value as a command-line argument. Because no '--' end-of-options separator is emitted, a value beginning with a hyphen is reinterpreted by git as an option rather than a revision, and --upload-pack=<cmd> causes git to invoke an arbitrary program during the fetch. Two conditions gate exploitation: the remote must use a local transport (file://), which Kustomize 5.0.0 began accepting while 4.5.7 rejected it, and Argo CD bundles Kustomize 5.x by default from release 2.7.0 onward - so the Kustomize upgrade embedded in Argo CD is precisely what opened this vector. Git deliberately ignores --upload-pack for https:// remotes, so remote HTTPS sources are not exploitable. The failure is entirely inside argocd-repo-server, meaning blocking repo-server egress does not mitigate it, and replacing the bundled Kustomize with a newer build does not correct the missing option separator either. Execution occurs as the repo-server service account user; the README-relevant impact is confidentiality and integrity of the repo-server process, which holds Git, Helm and OCI credentials for every configured repository, plus scope change to the underlying Kubernetes node/pod boundary as reflected in the CVSS S:C rating.
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
Reachable over the API with only Application get (PR:L), low complexity via default-bundled Kustomize 5.x; command execution in repo-server crosses a trust boundary (S:C) with full C/I/A impact.
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 2.7.0 until 3.3.15, 3.4.10, 3.5.4, and 3.6.0-rc2, Kustomize passes ref or version query values from remote resource, base, or component URLs to git fetch without an end-of-options separator. A leading-hyphen value can be parsed as --upload-pack and execute a command inside argocd-repo-server when the remote uses a local transport such as file://. Git does not run the supplied command for an https:// remote. The local transport does not leave the pod, so blocking repo-server egress does not prevent the execution. The command runs as the repo-server user, can read repository credentials and other process-accessible data, and can return output through manifest-generation errors. An attacker can commit a Kustomization to a Git repository that an Application builds or upload files through POST /api/v1/applications/manifestsWithFiles, also exposed by argocd app diff --local --server-side-generate. The upload path requires only Application get permission on an existing Application, without Application update or sync permission or repository write access. Kustomize 5.0.0 introduced acceptance of file://, whereas 4.5.7 rejects that transport; replacing the affected Kustomize with a newer version alone does not correct the missing option separator. 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
CWE-88: Improper Neutralization of Argument Delimiters in a Command.
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's repo-server component contains a critical command-injection flaw that allows a user with only read-level access to an Application to execute commands inside the repo-server pod, potentially exposing source-repository credentials and other sensitive process data. Because Argo CD orchestrates software delivery pipelines, exploitation could undermine deployment integrity and widen access to connected repositories. No public exploit identified at time of analysis, but the low permission threshold and critical severity warrant prioritized remediation.
No vendor-released patch identified at time of analysis; interim mitigations include restricting Application get RBAC to trusted users, disallowing file:// transport for Kustomize remote bases/components/resources, enforcing https:// remotes, applying network policies to limit repo-server egress, running repo-server with least privilege, rotating repository credentials, and monitoring repo-server logs and manifest-generation errors for injection attempts.
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
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
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-105249
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB