CVE-2026-79991 Authenticated SQL Injection via nested eager-loading criteria
Authenticated attackers can bypass site-scope restrictions in Craft CMS GraphQL mutations to create, modify, or delete entries in unauthorized sites.
- Exploited in the wild
- Not known
- Login needed
- Any signed-in user
- Attackable
- Over the internet
- Victim action needed
- Not needed
- Fix
- None listed
What is CVE-2026-79991?
CVE-2026-79991 is a high-severity SQL injection vulnerability in craftcms cms, published on 2 Sep 2026. Any signed-in user can exploit it over the network, with no action from the victim.
Official description
Craft CMS GraphQL entry mutation resolvers (saveEntry, deleteEntry) read siteIddirectly from$argumentswithout passing throughArgumentManagerprepareArguments(), which is the function that enforces site-scope filtering via array_intersect against the GraphQL schema’s allowed sites. The query path (ElementResolverprepareElementQuery) correctly calls prepareArguments()`, so queries to unauthorized sites return empty. But mutations bypass this entirely — an attacker with a token scoped to Site A can create, modify, or delete entries in Site B by passing siteId in the mutations argument.
Weakness: CWE-89
Which versions are affected by CVE-2026-79991?
How do I fix CVE-2026-79991?
No fix has been published for CVE-2026-79991 yet. Limit exposure of the affected software until one is available.
Use parameterised queries everywhere and never build SQL by joining strings. Upgrade affected software first; a web application firewall only buys time. More about SQL injection.
Is CVE-2026-79991 being exploited?
There is no known exploitation of CVE-2026-79991 in the wild and no public exploit code.
Sources
Also known as GHSA-4mgp-5vf2-7c9m, GHSA-p73g-29f3-m84x.