CVE-2025-55191

6.5 MEDIUM

📋 TL;DR

This CVE describes a race condition vulnerability in Argo CD's repository credentials handler that can cause the server to crash when concurrent operations target the same repository URL. Attackers with valid API tokens and repository permissions can trigger denial-of-service attacks, disrupting GitOps operations. Organizations running affected Argo CD versions are vulnerable.

💻 Affected Systems

Products:
  • Argo CD
Versions: 2.1.0 through 2.14.19, 3.2.0-rc1, 3.1.0-rc1 through 3.1.7, and 3.0.0-rc1 through 3.0.18
Operating Systems: All platforms running Argo CD
Default Config Vulnerable: ⚠️ Yes
Notes: Requires API token with repositories resource permissions (create, update, or delete actions).

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete and sustained denial-of-service of Argo CD server, disrupting all GitOps deployments and Kubernetes application management until manual intervention.

🟠

Likely Case

Intermittent server crashes causing deployment failures and operational disruption, requiring restarts and potentially causing deployment inconsistencies.

🟢

If Mitigated

Limited impact with proper access controls and monitoring, though still vulnerable to authorized users causing disruption.

🌐 Internet-Facing: MEDIUM - Requires valid API token with specific permissions, but internet-facing instances are more exposed to credential theft attempts.
🏢 Internal Only: HIGH - Internal attackers or compromised accounts with repository permissions can cause significant operational disruption.

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ✅ No
Complexity: MEDIUM

Requires authenticated access with specific permissions and ability to trigger concurrent operations on same repository URL.

🛠️ Fix & Mitigation

✅ Official Fix

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

Vendor Advisory: https://github.com/argoproj/argo-cd/security/advisories/GHSA-g88p-r42r-ppp9

Restart Required: No

Instructions:

1. Backup current Argo CD configuration and data. 2. Upgrade to patched version using your deployment method (Helm, kubectl, etc.). 3. Verify upgrade completed successfully. 4. Test repository operations to ensure functionality.

🔧 Temporary Workarounds

Rate Limit Repository Operations

all

Implement rate limiting on repository API endpoints to reduce likelihood of triggering race condition

# Configure via API gateway or reverse proxy
# Example nginx rate limiting: limit_req_zone $binary_remote_addr zone=argocd:10m rate=10r/s;

Restrict Repository Permissions

all

Minimize number of users with repository create/update/delete permissions

# Review and update RBAC policies
kubectl get rolebindings -n argocd
# Remove unnecessary permissions from roles

🧯 If You Can't Patch

  • Implement strict API token management and rotation policies
  • Deploy Argo CD behind a WAF with rate limiting and anomaly detection

🔍 How to Verify

Check if Vulnerable:

Check Argo CD version: kubectl get pods -n argocd -l app.kubernetes.io/name=argocd-server -o jsonpath='{.items[0].spec.containers[0].image}'

Check Version:

kubectl get pods -n argocd -l app.kubernetes.io/name=argocd-server -o jsonpath='{.items[0].spec.containers[0].image}' | grep -o 'v[0-9.]\+'

Verify Fix Applied:

Verify version is 2.14.20+, 3.2.0-rc2+, 3.1.8+, or 3.0.19+ and test concurrent repository operations

📡 Detection & Monitoring

Log Indicators:

  • Argo CD server panic logs
  • Unexpected server restarts
  • Multiple concurrent repository operations from same source

Network Indicators:

  • Spike in repository API requests
  • Repeated authentication attempts to repository endpoints

SIEM Query:

source="argocd" AND ("panic" OR "fatal" OR "crash") AND "repository"

🔗 References

📤 Share & Export