CVE-2024-31990 is a medium-severity (CVSS 4.8) CWE-863 vulnerability in github.com/argoproj/argo-cd/v2. A fix is available for github.com/argoproj/argo-cd/v2 — see the affected versions and patch details below.
Argo CD' API server does not enforce project sourceNamespaces
Exploitation Status
No confirmed exploitation observed yet
- CISA’s own triage has not observed active exploitation or public proof-of-concept code for this CVE as of its last assessment.
Exploitation and automatability from CISA’s SSVC triage for CVE-2024-31990.
EPSS Exploitation Probability
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
github.com/argoproj/argo-cd/v2🐹github.com/argoproj/argo-cd/v2🐹github.com/argoproj/argo-cd/v2Real-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
I can convince the UI to let me do things with an invalid Application.
- Admin gives me
p, michael, applications, *, demo/*, allow, wheredemocan just deploy to thedemonamespace - Admin gives me AppProject
devwhich reconciles from nsdev-apps - Admin gives me
p, michael, applications, sync, dev/*, allow, i.e. no updating via the UI allowed, gitops-only - I create an Application called
pwnindev-appswith project dev and sync the app with sources from git - I change the Application’s project to demo via kubectl or gitops (whichever mechanism my admins have given me, because it should be safe)
- I use the UI to edit the resource which should only be mutable via gitops
Patches
A patch for this vulnerability has been released in the following Argo CD versions:
v2.10.7 v2.9.12 v2.8.16
For more information
If you have any questions or comments about this advisory:
Open an issue in the Argo CD issue tracker or discussions Join us on Slack in channel #argo-cd
Credits
This vulnerability was found & reported by @crenshaw-dev (Michael Crenshaw)
The Argo team would like to thank these contributors for their responsible disclosure and constructive communications during the resolve of this issue
Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| 🐹Go | github.com/argoproj/argo-cd/v2 | ≥ 2.4.0&&< 2.8.16 | 2.8.16go get github.com/argoproj/argo-cd/v2@v2.8.16 |
| 🐹Go | github.com/argoproj/argo-cd/v2 | ≥ 2.9.0&&< 2.9.12 | 2.9.12go get github.com/argoproj/argo-cd/v2@v2.9.12 |
| 🐹Go | github.com/argoproj/argo-cd/v2 | ≥ 2.10.0&&< 2.10.7 | 2.10.7go get github.com/argoproj/argo-cd/v2@v2.10.7 |
Affected Products
argo cdargoprojDetection & mitigation playbook
Open-source dependencyDetect
Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for github.com/argoproj/argo-cd/v2, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.
Fix
Update github.com/argoproj/argo-cd/v2 to 2.8.16 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms CVE-2024-31990 is resolved across your whole dependency graph.
Workarounds
Put an independent control in front of the weakness: restrict the affected endpoint or interface to trusted networks, require an additional authentication factor or proxy-level check, and invalidate existing sessions and credentials in case the flaw has already been used.
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.
| Product | Fixed in | Advisory |
|---|---|---|
| Red Hat OpenShift GitOps 1.12 | openshift-gitops-1/argocd-rhel8:v1.12.2-1 | RHSA-2024:2816 |
Frequently Asked Questions
Is CVE-2024-31990 in your dependencies?
Find it across Go, including transitive dependencies.