CVE-2024-40634
📋 TL;DR
An unauthenticated attacker can send a specially crafted large JSON payload to Argo CD's /api/webhook endpoint, causing excessive memory allocation that leads to service disruption via Out Of Memory (OOM) kill. This vulnerability affects all Argo CD deployments with the webhook endpoint exposed, posing a high risk to availability.
💻 Affected Systems
- Argo CD
📦 What is this software?
Argo Cd by Argoproj
Argo Cd by Argoproj
Argo Cd by Argoproj
⚠️ Risk & Real-World Impact
Worst Case
Complete denial of service for Argo CD, disrupting Kubernetes deployments and GitOps workflows across the entire cluster.
Likely Case
Service disruption causing temporary unavailability of Argo CD, interrupting deployment pipelines and application updates.
If Mitigated
Limited impact if webhook endpoint is not internet-facing and network controls restrict access.
🎯 Exploit Status
Simple HTTP POST with large JSON payload; no authentication required.
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: 2.11.6, 2.10.15, or 2.9.20
Vendor Advisory: https://github.com/argoproj/argo-cd/security/advisories/GHSA-jmvp-698c-4x3w
Restart Required: Yes
Instructions:
1. Check current Argo CD version. 2. Upgrade to patched version using Helm, kubectl, or Argo CD operator. 3. Restart Argo CD pods. 4. Verify upgrade completed successfully.
🔧 Temporary Workarounds
Network Access Restriction
allRestrict access to /api/webhook endpoint using network policies or firewalls.
kubectl apply -f network-policy.yaml (create policy restricting webhook access)
Ingress Configuration
allConfigure ingress to block or rate-limit requests to /api/webhook endpoint.
nginx.ingress.kubernetes.io/configuration-snippet: |
location ~ ^/api/webhook {
deny all;
}
🧯 If You Can't Patch
- Implement strict network segmentation to isolate Argo CD from untrusted networks
- Deploy rate limiting and request size limits at the ingress/load balancer level
🔍 How to Verify
Check if Vulnerable:
Check if Argo CD version is below 2.11.6, 2.10.15, or 2.9.20 and /api/webhook endpoint is accessible.
Check Version:
kubectl get pods -n argocd -l app.kubernetes.io/name=argocd-server -o jsonpath='{.items[0].spec.containers[0].image}'
Verify Fix Applied:
Confirm Argo CD version is 2.11.6, 2.10.15, or 2.9.20 or higher, and test webhook endpoint with large payloads.
📡 Detection & Monitoring
Log Indicators:
- OOM kill events in Kubernetes logs
- Unusually large HTTP POST requests to /api/webhook
- High memory usage spikes in Argo CD pods
Network Indicators:
- Large HTTP POST requests (>10MB) to /api/webhook endpoint
- Multiple rapid requests to webhook endpoint
SIEM Query:
source="kubernetes" AND ("Out of memory" OR "OOM") AND "argocd" OR http_request_path="/api/webhook" AND http_request_size>10000000
🔗 References
- https://github.com/argoproj/argo-cd/commit/46c0c0b64deaab1ece70cb701030b76668ad0cdc
- https://github.com/argoproj/argo-cd/commit/540e3a57b90eb3655db54793332fac86bcc38b36
- https://github.com/argoproj/argo-cd/commit/d881ee78949e23160a0b280bb159e4d3d625a4df
- https://github.com/argoproj/argo-cd/security/advisories/GHSA-jmvp-698c-4x3w
- https://github.com/argoproj/argo-cd/commit/46c0c0b64deaab1ece70cb701030b76668ad0cdc
- https://github.com/argoproj/argo-cd/commit/540e3a57b90eb3655db54793332fac86bcc38b36
- https://github.com/argoproj/argo-cd/commit/d881ee78949e23160a0b280bb159e4d3d625a4df
- https://github.com/argoproj/argo-cd/security/advisories/GHSA-jmvp-698c-4x3w