CVE-2026-113672: Argo CD: A Jsonnet import can read files from the repo-server
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.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
Argo CDto a version that resolves this vulnerability.Fixed in 3.3.15
Event History
Frequently Asked Questions
Who can exploit the upload-based attack path?
A user needs only Application get permission on an existing directory Application. They do not need Application update or sync permission, repository write access, or an interactive user action.
Which deployment patterns are exposed to repository-committed Jsonnet files?
Any Application using a Git repository where an attacker can commit a .jsonnet file is exposed. Directory Applications are particularly affected because they evaluate every .jsonnet file in the application directory.
What sensitive data could be disclosed or impacted?
The importer can access any file readable by repo-server, including process environment data, projected service-account tokens, mounted private keys, and repository credentials. Imported data placed in a ConfigMap can be returned to the caller despite redaction of generated Secrets; importing a non-terminating device such as /dev/zero can also exhaust repo-server memory.