Bug 2272211 (CVE-2024-29893)

Summary: CVE-2024-29893 argo-cd: uncontrolled memory allocation vulnerability
Product: [Other] Security Response Reporter: Mauro Matteo Cascella <mcascell>
Component: vulnerabilityAssignee: Product Security <prodsec-ir-bot>
Status: NEW --- QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: unspecifiedCC: amctagga, anjoseph, jprabhak
Target Milestone: ---Keywords: Security
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: argo-cd 2.8.14, argo-cd 2.9.10, argo-cd 2.10.5 Doc Type: If docs needed, set a value
Doc Text:
The ArgoCD repo-server component is vulnerable to a denial of service attack, where it is possible to crash the repo server component through an out-of-memory error by pointing it to a malicious Helm registry. The loadRepoIndex() function in the ArgoCD's helm package does not limit the size or time while fetching the data. It fetches and creates a byte slice from the retrieved data in one go. If the registry is implemented to push data continuously, the repo server will keep allocating memory until it runs out.
Story Points: ---
Clone Of: Environment:
Last Closed: Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 2277967    
Bug Blocks: 2272216    

Description Mauro Matteo Cascella 2024-03-29 15:57:41 UTC
Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. All versions of ArgoCD starting from v2.4 have a bug where the ArgoCD repo-server component is vulnerable to a Denial-of-Service attack vector. Specifically,  it's possible to crash the repo server component through an out of memory error by pointing it to a malicious Helm registry. The loadRepoIndex() function in the ArgoCD's helm package, does not limit the size nor time while fetching the data. It fetches it and creates a byte slice from the retrieved data in one go. If the registry is implemented to push data continuously, the repo server will keep allocating memory until it runs out of it. A patch for this vulnerability has been released in v2.10.3, v2.9.8, and v2.8.12.

GitHub security advisory:
https://github.com/argoproj/argo-cd/security/advisories/GHSA-jhwx-mhww-rgc3

Upstream commits:
https://github.com/argoproj/argo-cd/commit/14f681e3ee7c38731943b98f92277e88a3db109d
https://github.com/argoproj/argo-cd/commit/36b8a12a38f8d92d55bffc81deed44389bf6eb59
https://github.com/argoproj/argo-cd/commit/3e5a878f6e30d935fa149723ea2a2e93748fcddd

Comment 3 errata-xmlrpc 2024-04-08 13:36:24 UTC
This issue has been addressed in the following products:

  Red Hat OpenShift GitOps 1.11

Via RHSA-2024:1697 https://access.redhat.com/errata/RHSA-2024:1697

Comment 4 errata-xmlrpc 2024-04-08 16:37:20 UTC
This issue has been addressed in the following products:

  Red Hat OpenShift GitOps 1.10

Via RHSA-2024:1700 https://access.redhat.com/errata/RHSA-2024:1700

Comment 5 errata-xmlrpc 2024-04-10 12:17:55 UTC
This issue has been addressed in the following products:

  Red Hat OpenShift GitOps 1.12
  Red Hat OpenShift GitOps 1.12 - RHEL 9

Via RHSA-2024:1752 https://access.redhat.com/errata/RHSA-2024:1752

Comment 6 errata-xmlrpc 2024-04-10 12:42:08 UTC
This issue has been addressed in the following products:

  Red Hat OpenShift GitOps 1.12
  Red Hat OpenShift GitOps 1.12 - RHEL 9

Via RHSA-2024:1753 https://access.redhat.com/errata/RHSA-2024:1753