CVE-2025-59531

7.5 HIGH

📋 TL;DR

Argo CD versions 1.2.0 through 3.2.0-rc1 contain a vulnerability where unauthenticated API requests with malformed Bitbucket Server payloads can crash the API server, causing denial of service. This affects all Argo CD deployments with the /api/webhook endpoint exposed and without a configured webhook.bitbucketserver.secret. Attackers can trigger CrashLoopBackOff states and potentially cause complete API outages.

💻 Affected Systems

Products:
  • Argo CD
Versions: 1.2.0 through 1.8.7, 2.0.0-rc1 through 2.14.19, 3.0.0-rc1 through 3.2.0-rc1, 3.1.7, 3.0.18
Operating Systems: All platforms running Argo CD
Default Config Vulnerable: ⚠️ Yes
Notes: Only vulnerable when webhook.bitbucketserver.secret is not configured and /api/webhook endpoint is accessible.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete API server outage across all replicas, rendering Argo CD unusable and disrupting Kubernetes deployment workflows.

🟠

Likely Case

Partial or complete API server crashes causing intermittent or sustained denial of service to legitimate users.

🟢

If Mitigated

No impact if webhook.bitbucketserver.secret is configured or if vulnerable versions are not exposed to untrusted networks.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: LIKELY
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

Single malformed HTTP request triggers the crash, making exploitation trivial for attackers with network access.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 2.14.20, 3.2.0-rc2, 3.1.8, 3.0.19

Vendor Advisory: https://github.com/argoproj/argo-cd/security/advisories/GHSA-f9gq-prrc-hrhc

Restart Required: Yes

Instructions:

1. Identify current Argo CD version. 2. Upgrade to patched version using Helm, kubectl, or Argo CD's upgrade process. 3. Restart Argo CD components. 4. Verify version and functionality.

🔧 Temporary Workarounds

Configure Bitbucket Server Webhook Secret

all

Set webhook.bitbucketserver.secret to prevent malformed payload processing

argocd-cm ConfigMap: add 'webhook.bitbucketserver.secret: your-secret-here'

Restrict Webhook Endpoint Access

all

Use network policies or firewalls to limit access to /api/webhook endpoint

kubectl apply network policies to restrict ingress to Argo CD API

🧯 If You Can't Patch

  • Configure webhook.bitbucketserver.secret immediately
  • Implement strict network controls to limit access to Argo CD API endpoints

🔍 How to Verify

Check if Vulnerable:

Check Argo CD version and verify webhook.bitbucketserver.secret is not configured in argocd-cm ConfigMap

Check Version:

kubectl get deployment argocd-server -o jsonpath='{.spec.template.spec.containers[0].image}' | grep -o 'v[0-9.]*'

Verify Fix Applied:

Confirm version is patched (2.14.20+, 3.2.0-rc2+, 3.1.8+, 3.0.19+) and test webhook endpoint with malformed payload

📡 Detection & Monitoring

Log Indicators:

  • API server crash logs
  • panic: runtime error: index out of range
  • CrashLoopBackOff events in pod status

Network Indicators:

  • HTTP POST requests to /api/webhook with malformed JSON
  • Unusual traffic patterns to webhook endpoint

SIEM Query:

source="argo-cd" AND ("panic" OR "crash" OR "index out of range")

🔗 References

📤 Share & Export