CVE-2026-55797 Overview
CVE-2026-55797 is a command injection vulnerability in the Argo CD repo-server component. Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. The flaw affects versions from 2.11.0 up to 3.3.15, 3.4.10, 3.5.4, and 3.6.0-rc2. When the repo-server clones, tests, or fetches an SSH Git repository configured with a proxy URL, the proxy host and port are embedded in an SSH ProxyCommand executed through a shell without neutralizing shell metacharacters. Any authenticated user who can create or update a repository or repository credential template can inject arbitrary commands. The issue is tracked under [CWE-78] (OS Command Injection).
Critical Impact
An authenticated user with repository management permissions can execute arbitrary commands on the Argo CD repo-server and steal its Git, Helm, and OCI credentials.
Affected Products
- Argo CD versions 2.11.0 through 3.3.14
- Argo CD versions 3.4.0 through 3.4.9
- Argo CD versions 3.5.0 through 3.5.3 and 3.6.0-rc1
Discovery Timeline
- 2026-10-09 - CVE CVE-2026-55797 published to NVD
- 2026-10-09 - Last updated in NVD database
Technical Details for CVE-2026-55797
Vulnerability Analysis
The Argo CD repo-server handles Git operations on behalf of the controller, including clones, connectivity tests, and periodic fetches. When a repository is configured with a proxy, the server constructs an SSH ProxyCommand string that wraps the proxy host and port. This string is then passed to a shell interpreter rather than executed directly with argument isolation.
Because the proxy host field is user-controlled and no shell metacharacter sanitization is applied, attacker-supplied characters such as ;, |, $(), or backticks are interpreted by the shell. The resulting command runs inside the repo-server pod with the privileges of that service account.
The repo-server holds sensitive credentials used to access upstream Git, Helm, and OCI registries. Successful exploitation therefore pivots from a single tenant repository configuration into supply-chain compromise across every artifact source Argo CD manages.
Root Cause
The root cause is improper neutralization of special elements used in an OS command [CWE-78]. The proxy URL parser extracts host and port components, then concatenates them into a ssh -o ProxyCommand=... invocation that is handed to a shell. User input flows into the command string without quoting or validation.
Attack Vector
Exploitation requires an authenticated principal with permission to create or modify a repository or a repository credential template. The attacker submits a repository definition whose proxy field contains shell metacharacters followed by arbitrary commands. When the repo-server next performs an SSH operation against that repository, the injected payload executes.
// Patched usage pattern from the fix: proxy is passed as a structured
// argument to a dedicated proxy helper (connect-proxy / socks5), not
// concatenated into a shell command string.
//
// Example of the new, safe CLI surface introduced by the fix:
argocd repo add ssh://git@github.com/argoproj/argocd-example-apps \
--ssh-private-key-path ~/id_rsa \
--proxy socks5://your.proxy.server.ip:1080
argocd repo add ssh://git@github.com/argoproj/argocd-example-apps \
--ssh-private-key-path ~/id_rsa \
--proxy socks5://username:password@your.proxy.server.ip:1080
Source: ArgoCD Commit 9b27aeb
Stop Remote Code Execution Before It Runs
Singularity™ Endpoint detects and blocks exploit attempts at machine speed, including zero-days and novel attack techniques.
Stop Exploit AttemptsDetection Methods for CVE-2026-55797
Indicators of Compromise
- Repository or credential template objects whose proxy field contains shell metacharacters such as ;, |, &, backticks, or $().
- Unexpected child processes of the Argo CD repo-server container, especially shells (sh, bash) spawning network tools, package managers, or curl/wget.
- Outbound connections from the repo-server pod to hosts that are not configured Git, Helm, or OCI endpoints.
- Audit log entries showing repository create or update API calls originating from accounts that normally do not manage repositories.
Detection Strategies
- Inspect Kubernetes audit logs for argoproj.io repository and repocreds resources and flag any proxy value failing a strict URL allowlist.
- Monitor process trees inside the argocd-repo-server pod and alert on any non-git child process launched under an SSH operation.
- Correlate Argo CD API audit events with repo-server egress telemetry to surface new destinations introduced by recently modified repositories.
Monitoring Recommendations
- Enable Kubernetes audit logging at the RequestResponse level for Argo CD custom resources and forward logs to a central SIEM.
- Baseline normal repo-server network destinations and process behavior, then alert on deviations.
- Review all existing repository and repocreds objects for malformed proxy fields as a one-time hunt.
How to Mitigate CVE-2026-55797
Immediate Actions Required
- Upgrade Argo CD to version 3.3.15, 3.4.10, 3.5.4, or 3.6.0-rc2 or later as applicable to your release train.
- Audit all repository and repository credential template objects and remove any entry with suspicious proxy values.
- Rotate Git, Helm, and OCI credentials stored in Argo CD if unauthorized repository modifications are suspected.
- Restrict RBAC so that only trusted principals hold repositories and repocreds create or update permissions.
Patch Information
The maintainers released fixes in Argo CD v3.3.15, v3.4.10, v3.5.4, and v3.6.0-rc2. Technical details are documented in Security Advisory GHSA-j6cw-g6p4-7hch and implemented in commit 1e3ddd0 and commit 9b27aeb. The fix routes SSH proxying through connect-proxy and adds socks5 proxy support instead of concatenating proxy values into a shell command.
Workarounds
- Remove the proxy field from all repository and repocreds objects until patching is complete.
- Tighten Argo CD RBAC to restrict repositories, create and repositories, update actions to a minimal set of administrators.
- Apply NetworkPolicy rules limiting the repo-server pod to only approved egress destinations.
# Verify installed Argo CD version and upgrade via Helm
kubectl -n argocd get deploy argocd-repo-server \
-o jsonpath='{.spec.template.spec.containers[0].image}'
helm repo update
helm upgrade argocd argo/argo-cd --version <patched-chart-version> \
--namespace argocd
# Hunt for repositories with suspicious proxy values
kubectl -n argocd get secrets -l argocd.argoproj.io/secret-type=repository \
-o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.data.proxy}{"\n"}{end}'
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

