Skip to main content

Argo CD EUVDEUVD-2026-105249

| CVE-2026-113708 CRITICAL
Improper Neutralization of Argument Delimiters in a Command ('Argument Injection') (CWE-88)
2026-10-20 GitHub_M
9.9
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate with Application get permission
  2. Delivery
    Upload crafted Kustomization via manifestsWithFiles
  3. Exploit
    Git parses leading-hyphen ref as --upload-pack
  4. Execution
    Execute command as repo-server user
  5. Impact
    Exfiltrate 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.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
Patch available 0.7% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

argo-cd 3.4.0-rc1, < 3.4.10
argo-cd 3.6.0-rc1, < 3.6.0-rc2
argo-cd 2.7.0, < 3.3.15
argo-cd 3.5.0-rc1, < 3.5.4

Affected Packages

euvd argo_cd fix: 3.3.15, 3.4.10, 3.5.4, 3.6.0-rc2

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

Vendor (GitHub_M) PRIMARY 9.9 CRITICAL
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
vuln.today AI 9.9 CRITICAL

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.

3.1 AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:N
Red Hat 9.9 HIGH

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Changed
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

2
Patch available
Oct 20, 2026 - 20:03 EUVD
CVE Published
Oct 20, 2026 - 18:03 cve.org
CRITICAL 9.9

DescriptionCVE.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.

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

Why It Matters

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.

Business Impact: High
Compensating Controls

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

EPSS Score
0.7%
Top 49% exploitable
Prevalence
High
leading GitOps CD tool, widely deployed across enterprise Kubernetes
Data Quality
5 sources
Confidence: Medium
EUVD NVD CVE.org EPSS Vulnrichment Vendor GitHub

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.

SignalValue
Severity CRITICAL
CISA KEV No
Public POC No
EPSS 0.7%
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

51
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +50
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

CVE-2025-55190 CRITICAL POC
9.9 Sep 04

Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. Rated critical severity (CVSS 9.9), this vulne

CVE-2023-40029 CRITICAL POC
9.6 Sep 07

Argo CD is a declarative continuous deployment for Kubernetes. Rated critical severity (CVSS 9.6), this vulnerability is

CVE-2024-21662 CRITICAL POC
9.1 Mar 18

Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. Rated critical severity (CVSS 9.1), this vulne

CVE-2024-31989 CRITICAL POC
9.0 May 21

Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. Rated critical severity (CVSS 9.0), this vulne

CVE-2022-1025 HIGH POC
8.8 Jul 12

All unpatched versions of Argo CD starting with v1.0.0 are vulnerable to an improper access control bug, allowing a mali

CVE-2020-8828 HIGH POC
8.8 Apr 08

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

CVE-2024-22424 HIGH POC
8.3 Jan 19

Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. Rated high severity (CVSS 8.3), this vulnerabi

CVE-2025-59531 HIGH POC
7.5 Oct 01

Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. Versions 1.2.0 through 1.8.7, 2.0.0-rc1 throug

CVE-2025-59537 HIGH POC
7.5 Oct 01

Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. Versions 1.2.0 through 1.8.7, 2.0.0-rc1 throug

CVE-2025-59538 HIGH POC
7.5 Oct 01

Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. For versions 2.9.0-rc1 through 2.14.19, 3.0.0-

CVE-2024-40634 HIGH POC
7.5 Jul 22

Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. Rated high severity (CVSS 7.5), this vulnerabi

CVE-2024-37152 HIGH POC
7.5 Jun 06

Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. Rated high severity (CVSS 7.5), this vulnerabi

Vendor StatusVendor

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy