NIST deprecates RSA-2048 from 2030. Find every one of them before attackers do.
🐹
🐹 Go
Not in CISA KEV
HIGH severity

CVE-2024-22424 — argo-cd

HIGHFix: argoproj/argo-cd#16860

CVE-2024-22424 is a high-severity (CVSS 8.3) Cross-Site Request Forgery (CSRF) vulnerability in github.com/argoproj/argo-cd. 1 public exploit or proof-of-concept reference is indexed, so weaponization risk is real. A fix is available for github.com/argoproj/argo-cd — see the affected versions and patch details below.

Cross-Site Request Forgery (CSRF) in github.com/argoproj/argo-cd

Also known asGHSA-92mw-q256-5vwg
Published
Updated
Affected
5 pkgs
Patched
4 / 5
Exploits
1 known
Exploitation data as of Nov 2, 2026 · OSV.dev, NVD, FIRST.org (EPSS)

Exploitation Status

Proof-of-concept exploit code exists

  • CISA’s SSVC triage found public proof-of-concept exploit code for this CVE, though no confirmed active exploitation.
  • A successful exploit gives an attacker total control of the affected component, not partial access.

Exploitation and automatability from CISA’s SSVC triage for CVE-2024-22424.

EPSS Exploitation Probability

via FIRST.org ↗
0.5%probability of exploitation in next 30 days
Lower Risk0.00%
Lower risk than most CVEs42th percentile — riskier than 42% of all scored CVEsHighest risk
0.00%0.33%0.66%0.98%0.1%0.5%May 26Sep 26Nov 26

Probability of exploitation in the next 30 days, from FIRST.org EPSS.

How urgent is this, really

Where this sits among everything scored

Real-World Exposure

5 pkgs affected
🐹github.com/argoproj/argo-cd🐹github.com/argoproj/argo-cd/v2🐹github.com/argoproj/argo-cd/v2🐹github.com/argoproj/argo-cd/v2🐹github.com/argoproj/argo-cd/v2

Real-time download stats are indexed for npm and PyPI packages. This vulnerability affects Go packages — download data is not available via public APIs for these ecosystems.

Description

Impact

The Argo CD API prior to versions 2.10-rc2, 2.9.4, 2.8.8, and 2.7.16 are vulnerable to a cross-server request forgery (CSRF) attack when the attacker has the ability to write HTML to a page on the same parent domain as Argo CD.

A CSRF attack works by tricking an authenticated Argo CD user into loading a web page which contains code to call Argo CD API endpoints on the victim’s behalf. For example, an attacker could send an Argo CD user a link to a page which looks harmless but in the background calls an Argo CD API endpoint to create an application running malicious code.

Argo CD uses the “Lax” SameSite cookie policy to prevent CSRF attacks where the attacker controls an external domain. The malicious external website can attempt to call the Argo CD API, but the web browser will refuse to send the Argo CD auth token with the request.

Many companies host Argo CD on an internal subdomain, such as https://argo-cd.internal.example.com. If an attacker can place malicious code on, for example, https://test.internal.example.com/, they can still perform a CSRF attack. In this case, the “Lax” SameSite cookie does not prevent the browser from sending the auth cookie, because the destination is a parent domain of the Argo CD API.

Browsers generally block such attacks by applying CORS policies to sensitive requests with sensitive content types. Specifically, browsers will send a “preflight request” for POSTs with content type “application/json” asking the destination API “are you allowed to accept requests from my domain?” If the destination API does not answer “yes,” the browser will block the request.

Before the patched versions, Argo CD did not validate that requests contained the correct content type header. So an attacker could bypass the browser’s CORS check by setting the content type to something which is considered “not sensitive” such as “text/plain.” The browser wouldn’t send the preflight request, and Argo CD would happily accept the contents (which are actually still JSON) and perform the requested action (such as running malicious code).

Patches

A patch for this vulnerability has been released in the following Argo CD versions:

  • 2.10-rc2
  • 2.9.4
  • 2.8.8
  • 2.7.16

🚨 The patch contains a breaking API change. 🚨 The Argo CD API will no longer accept non-GET requests which do not specify application/json as their Content-Type. The accepted content types list is configurable, and it is possible (but discouraged) to disable the content type check completely.

Workarounds

The only way to completely resolve the issue is to upgrade.

Credits

The Argo CD team would like to express their gratitude to An Trinh of Calif who reported the issue confidentially according to our guidelines and published a helpful blog post to describe the issue. We would also like to thank them for actively participating in the review for the patch.

References

Affected Packages

5 total 4 fixed
EcosystemPackageVulnerable rangeFix
🐹Gogithub.com/argoproj/argo-cd≥ 0.1.0No fix
🐹Gogithub.com/argoproj/argo-cd/v2all versions2.7.16go get github.com/argoproj/argo-cd/v2@v2.7.16
🐹Gogithub.com/argoproj/argo-cd/v2≥ 2.8.0-rc1&&< 2.8.82.8.8go get github.com/argoproj/argo-cd/v2@v2.8.8
🐹Gogithub.com/argoproj/argo-cd/v2≥ 2.9.0-rc1&&< 2.9.42.9.4go get github.com/argoproj/argo-cd/v2@v2.9.4
🐹Gogithub.com/argoproj/argo-cd/v2≥ 2.10.0-rc1&&< 2.10-rc22.10-rc2go get github.com/argoproj/argo-cd/v2@v2.10-rc2

Affected Products

2 products · 4 configurations
Application
argo cdargoproj
≥ 2.9.0 && < 2.9.4
1 version
2.10.0
Application
argo-cdlinuxfoundation
≥ 0.1.0 && < 2.7.16
range
Exploits & PoCs
1

Research use only. For defensive security, authorized penetration testing, and academic research only. Never execute exploit code against systems without explicit written authorization.

Detection & mitigation playbook

Open-source dependency
  1. Detect

    Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for github.com/argoproj/argo-cd, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.

  2. Fix

    A fix is available for CVE-2024-22424; check the affected-versions list above or the advisory for the patched release of github.com/argoproj/argo-cd, then make sure no transitive dependency still pins the vulnerable range.

  3. Workarounds

    If you can't upgrade right away: gate or disable the affected feature, validate untrusted input at the boundary, and avoid passing attacker-controlled data into the vulnerable path. O3's runtime protection blocks exploitation in production as an interim safeguard until the upgrade lands.

Fixing This On Your OS

If you run this on a Linux distribution, patch through your package manager against the distro's own security advisory below — it tracks the exact backported fix for your release, which can ship on a different timeline (and sometimes a different severity) than the upstream project.

Red HatModerate
ProductFixed inAdvisory
Red Hat OpenShift GitOps 1.10openshift-gitops-1/argocd-rhel8:v1.10.2-2RHSA-2024:0692
Red Hat OpenShift GitOps 1.11openshift-gitops-1/argocd-rhel8:v1.11.1-1RHSA-2024:0689
Red Hat OpenShift GitOps 1.9openshift-gitops-1/argocd-rhel8:v1.9.4-1RHSA-2024:0691

Frequently Asked Questions

### Impact The Argo CD API prior to versions 2.10-rc2, 2.9.4, 2.8.8, and 2.7.16 are vulnerable to a cross-server request forgery (CSRF) attack when the attacker has the ability to write HTML to a page on the same parent domain as Argo CD. A CSRF attack works by tricking an authenticated Argo CD user into loading a web page which contains code to call Argo CD API endpoints on the victim’s behalf. For example, an attacker could send an Argo CD user a link to a page which looks harmless but in the background calls an Argo CD API endpoint to create an application running malicious code. Argo CD
O3 Security · Impact-Aware SCA

Is CVE-2024-22424 in your dependencies?

Find it across Go, including transitive dependencies.

CVE-2024-22424: argo-cd — Fixed in 2.7.16