{"id":"CVE-2026-79991","aliases":["GHSA-4mgp-5vf2-7c9m"],"url":"https://o3.security/vulnerability/CVE-2026-79991","summary":"Authenticated SQL Injection via nested eager-loading criteria","details":"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.","published":"2026-09-02T14:25:15.221Z","modified":"2026-09-04T03:47:30.912536179Z","cvss":null,"epss":null,"cisaKev":null,"exploitsKnown":null,"affectedPackages":[],"fix":null,"references":[{"type":"WEB","url":"https://packagist.org"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/79xxx/CVE-2026-79991.json"},{"type":"ADVISORY","url":"https://github.com/craftcms/cms/releases/tag/5.10.13"},{"type":"ADVISORY","url":"https://github.com/craftcms/cms/security/advisories/GHSA-4mgp-5vf2-7c9m"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-79991"},{"type":"ADVISORY","url":"https://www.hckrt.com/hacktivity/HCKRT-B5BSMM"},{"type":"PACKAGE","url":"https://github.com/craftcms/cms"}],"provenance":{"sources":["OSV.dev","FIRST.org (EPSS)"],"lastVerified":"2026-09-04T03:47:30.912536179Z"}}