All unpatched versions of Argo CD starting with v0.7.0 are vulnerable to a symlink following bug allowing a malicious user with repository write access to leak sensitive files from Argo CD's repo-server.
A malicious Argo CD user with write access for a repository which is (or may be) used in a directory-type Application may commit a symlink which points to an out-of-bounds file. * If the target file is a valid JSON or YAML manifest file, and the resource is allowed in the Application, the attacker can read the contents of that manifest file. (In versions <2.3.2, <2.2.8, and <2.1.14, the attacker may read the files contents even if the resource is not allowed in the Application). * If the target file is valid JSON but is not a manifest file, the attacker may read the contents of the file. * If the target file is not valid JSON or YAML, the attacker may read partial file contents (usually just the first character of the file).
Sensitive files which could be leaked include manifest files from other Applications' source repositories (potentially decrypted files, if you are using a decryption plugin) or any JSON-formatted secrets which have been mounted as files on the repo-server.
A patch for this vulnerability has been released in the following Argo CD versions:
jsonnet.enable
since the same build tool is used for both Jsonnet and plain-manifest ("directory") sources.This vulnerability was originally discovered as part of the Trail of Bits audit, published March 12, 2021. The behavior was left unchanged at the time.
The vulnerability was independently re-discovered by @crenshaw-dev, who contributed the patch. A security audit by Ada Logics independently followed up on the Trail of Bits report around the same time.
Open an issue in the Argo CD issue tracker or discussions Join us on Slack in channel #argo-cd
{ "nvd_published_at": "2022-05-20T14:15:00Z", "github_reviewed_at": "2022-05-23T21:13:57Z", "severity": "MODERATE", "github_reviewed": true, "cwe_ids": [ "CWE-59", "CWE-61" ] }