CVE-2026-92594
largeImproper GraphQL Authorization Leaks User PII in Craft CMS 5
Craft CMS 5.0.0-RC1 through versions before 5.11.0 gate the GraphQL draftCreator and revisionCreator fields with only the elements.drafts:read or elements.revisions:read scopes instead of the user-data scope (usergroups.*:read) enforced by Gql::canQueryUsers(), and the resolver returns a raw User element with no per-field authorization. Any client holding just the drafts or revisions scope — or an unauthenticated client, if the operator has enabled the public GraphQL schema with those scopes — can query these fields and harvest the email addresses, usernames, full names, and postal addresses of all draft and revision creators, typically site editors and administrators. No privilege escalation or code execution is involved; the impact is confidentiality of user PII (CWE-200), consistent with the 8.7 high CVSS 4.0 score. All sites running the affected Craft CMS 5.x range are vulnerable in principle, with actual exposure depending on whether a GraphQL schema (public or token-based) grants the drafts or revisions scopes. No public proof-of-concept is known, the flaw is not in CISA's KEV catalog, and no exploitation has been reported; a fix is available in Craft CMS 5.11.0.
What to do: Upgrade to Craft CMS 5.11.0, which fixes the field-level authorization. Until then, remove the elements.drafts:read and elements.revisions:read scopes from the public GraphQL schema and from any API tokens that don't need them, and audit existing GraphQL schemas/tokens for those grants. Check GraphQL access logs for queries requesting draftCreator or revisionCreator fields to detect past PII harvesting.
| Craft CMS | 5.0.0-RC1 through all versions before 5.11.0 |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
Craft CMS 5.0.0-RC1 through versions before 5.11.0 incorrectly authorize the GraphQL draftCreator and revisionCreator fields: instead of requiring the user-data scope enforced by Gql::canQueryUsers() (usergroups.*:read), these fields are gated only on the elements.drafts:read / elements.revisions:read scopes, and their resolver returns a raw User element whose email, username, fullName, and addresses fields have no per-field authorization. A client holding only the drafts or revisions scope — including an unauthenticated client when the operator has enabled the public GraphQL schema with those scopes — can therefore harvest the email addresses, usernames, full names, and postal addresses of all draft/revision creators (typically site editors and administrators). The issue is fixed in 5.11.0.
- Weakness
- CWE-200
- Vector
- CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
In the news0 stories
No ingested article mentions this CVE yet.