CVE Vulnerabilities

CVE-2022-24904

Improper Link Resolution Before File Access ('Link Following')

Published: May 20, 2022 | Modified: Aug 07, 2024
CVSS 3.x
4.3
MEDIUM
Source:
NVD
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
CVSS 2.x
4 MEDIUM
AV:N/AC:L/Au:S/C:P/I:N/A:N
RedHat/V2
RedHat/V3
4.3 MODERATE
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
Ubuntu

Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. Argo CD starting with version 0.7.0 and prior to versions 2.1.15m 2.2.9, and 2.3.4 is vulnerable to a symlink following bug allowing a malicious user with repository write access to leak sensitive files from Argo CDs 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. 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 Argo CD versions 2.3.4, 2.2.9, and 2.1.15. Users of versions 2.3.0 or above who do not have any Jsonnet/directory-type Applications may disable the Jsonnet/directory config management tool as a workaround.

Weakness

The product attempts to access a file based on the filename, but it does not properly prevent that filename from identifying a link or shortcut that resolves to an unintended resource.

Affected Software

Name Vendor Start Version End Version
Argo_cd Argoproj 0.7.0 (including) 2.1.15 (excluding)
Argo_cd Argoproj 2.2.0 (including) 2.2.9 (excluding)
Argo_cd Argoproj 2.3.0 (including) 2.3.4 (excluding)
Red Hat OpenShift GitOps 1.3 RedHat openshift-gitops-1/applicationset-rhel8:v1.3.10-1 *
Red Hat OpenShift GitOps 1.3 RedHat openshift-gitops-1/argocd-rhel8:v1.3.10-1 *
Red Hat OpenShift GitOps 1.3 RedHat openshift-gitops-1/dex-rhel8:v1.3.10-1 *
Red Hat OpenShift GitOps 1.3 RedHat openshift-gitops-1/gitops-operator-bundle:v1.3.10-1 *
Red Hat OpenShift GitOps 1.3 RedHat openshift-gitops-1/gitops-rhel8:v1.3.10-1 *
Red Hat OpenShift GitOps 1.3 RedHat openshift-gitops-1/gitops-rhel8-operator:v1.3.10-1 *
Red Hat OpenShift GitOps 1.3 RedHat openshift-gitops-1/kam-delivery-rhel8:v1.3.10-1 *
Red Hat OpenShift GitOps 1.3 RedHat openshift-gitops-1/applicationset-rhel8:v1.3.9-3 *
Red Hat OpenShift GitOps 1.3 RedHat openshift-gitops-1/argocd-rhel8:v1.3.9-3 *
Red Hat OpenShift GitOps 1.3 RedHat openshift-gitops-1/dex-rhel8:v1.3.9-3 *
Red Hat OpenShift GitOps 1.3 RedHat openshift-gitops-1/gitops-operator-bundle:v1.3.9-3 *
Red Hat OpenShift GitOps 1.3 RedHat openshift-gitops-1/gitops-rhel8:v1.3.9-3 *
Red Hat OpenShift GitOps 1.3 RedHat openshift-gitops-1/gitops-rhel8-operator:v1.3.9-3 *
Red Hat OpenShift GitOps 1.3 RedHat openshift-gitops-1/kam-delivery-rhel8:v1.3.9-3 *
Red Hat OpenShift GitOps 1.4 RedHat openshift-gitops-1/applicationset-rhel8:v1.4.7-2 *
Red Hat OpenShift GitOps 1.4 RedHat openshift-gitops-1/argocd-rhel8:v1.4.7-2 *
Red Hat OpenShift GitOps 1.4 RedHat openshift-gitops-1/dex-rhel8:v1.4.7-2 *
Red Hat OpenShift GitOps 1.4 RedHat openshift-gitops-1/gitops-operator-bundle:v1.4.7-2 *
Red Hat OpenShift GitOps 1.4 RedHat openshift-gitops-1/gitops-rhel8:v1.4.7-2 *
Red Hat OpenShift GitOps 1.4 RedHat openshift-gitops-1/gitops-rhel8-operator:v1.4.7-2 *
Red Hat OpenShift GitOps 1.4 RedHat openshift-gitops-1/kam-delivery-rhel8:v1.4.7-2 *
Red Hat OpenShift GitOps 1.5 RedHat openshift-gitops-1/applicationset-rhel8:v1.5.1-4 *
Red Hat OpenShift GitOps 1.5 RedHat openshift-gitops-1/argocd-rhel8:v1.5.1-4 *
Red Hat OpenShift GitOps 1.5 RedHat openshift-gitops-1/dex-rhel8:v1.5.1-4 *
Red Hat OpenShift GitOps 1.5 RedHat openshift-gitops-1/gitops-operator-bundle:v1.5.1-4 *
Red Hat OpenShift GitOps 1.5 RedHat openshift-gitops-1/gitops-rhel8:v1.5.1-4 *
Red Hat OpenShift GitOps 1.5 RedHat openshift-gitops-1/gitops-rhel8-operator:v1.5.1-4 *
Red Hat OpenShift GitOps 1.5 RedHat openshift-gitops-1/kam-delivery-rhel8:v1.5.1-4 *

Potential Mitigations

  • Follow the principle of least privilege when assigning access rights to entities in a software system.
  • Denying access to a file can prevent an attacker from replacing that file with a link to a sensitive file. Ensure good compartmentalization in the system to provide protected areas that can be trusted.

References