Skip to main content

Craft CMS EUVDEUVD-2026-70048

| CVE-2026-79990 HIGH
Authorization Bypass Through User-Controlled Key (CWE-639)
2026-09-02 Hackrate GHSA-fvhj-675v-869c
8.7
CVSS 4.0 · Vendor: Hackrate
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain valid GraphQL API token (any site scope)
  2. Delivery
    Enumerate available siteId values via schema introspection or prior knowledge
  3. Exploit
    Craft saveEntry/deleteEntry mutation with target siteId outside token scope
  4. Execution
    Submit mutation over HTTPS to GraphQL endpoint
  5. Persist
    Bypass ArgumentManager::prepareArguments() site-scope filter
  6. Impact
    Create, modify, or delete content entries in unauthorized site

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Object-level authorization, IDOR prevention
Exploitation Conditions

The attacker must hold a valid Craft CMS GraphQL API token with at least PR:L (scoped to one or more sites); unauthenticated access is not sufficient. The Craft CMS installation must have the GraphQL API enabled (not enabled by default in all configurations) and must operate in a multi-site setup with at least two sites defined - the bypass is meaningless in single-site installations because there is no unauthorized site to target. Exploitation consists solely of passing a siteId integer in the mutation $arguments that references a site outside the token's allowed-sites list. Limiting factors: token-level authentication is required (no anonymous exploitation); the GraphQL API must be explicitly enabled; and a multi-site Craft CMS deployment is necessary. Installations using single-site configurations or those with GraphQL disabled are not affected.

Impact

The CVSS 4.0 score of 8.7 (AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H) accurately reflects the severity: low-complexity network exploitation by any token holder with C/I/A all rated High on the vulnerable system. EPSS data is not provided in the input and KEV status is negative, meaning no confirmed active exploitation is known. Despite the absence of a public exploit, the vulnerability is straightforwardly reproducible by any developer with a GraphQL client and a valid token - the bypass requires only adding a siteId integer to a mutation argument. For organizations running multi-site Craft CMS installations, even a mid-sized municipal IT team in kalisz should treat this as urgent because a compromised low-privilege content editor token could be leveraged to tamper with or destroy content across all sites in the installation. The risk is somewhat constrained by the PR:L prerequisite (a valid token is required) and the need for a multi-site deployment, but within those conditions the impact ceiling is full cross-site content manipulation with no further exploitation complexity.

Exploit ScenarioDerived

An attacker who has obtained a valid Craft CMS GraphQL API token - for example, via credential theft, a compromised content editor account, or an exposed automation token - issues a saveEntry mutation while specifying the siteId of a site outside their token's scope. Because ArgumentManager::prepareArguments() is never called in the mutation path, the site-scope check is silently skipped and the entry is created or modified in the target site. The attacker could delete all entries in a production site while their token is nominally scoped only to a staging site, causing full content loss with no further privilege escalation needed.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 02, 2026

GraphQL mutation resolvers in Craft CMS allow a token-authenticated user scoped to Site A to create, modify, or delete content entries in any other site (Site B, Site C, etc.) within the same multi-site installation. The saveEntry and deleteEntry resolvers read siteId directly from user-controlled $arguments without invoking ArgumentManager::prepareArguments(), which performs the critical array_intersect check against the GraphQL schema's allowed-sites list. Query resolvers call prepareArguments() correctly and thus enforce site boundaries, making this a mutation-specific authorization bypass. Craft CMS 5.10.11 ships the fix via the new MutationResolver::requireAllowedSite() guard; no public exploit or CISA KEV listing has been identified at time of analysis.

RemediationAI

Upgrade Craft CMS to version 5.10.11 or later, which introduces craft\gql\base\MutationResolver::requireAllowedSite() to enforce site-scope validation on saveEntry and deleteEntry GraphQL mutations. The fix is confirmed via the release at https://github.com/craftcms/cms/releases/tag/5.10.11 and the security advisory GHSA-3wcr-p33w-528f. If immediate upgrade is not feasible, a practical compensating control is to disable GraphQL API access entirely in Craft CMS settings (System > GraphQL) - note this will break any headless front-ends or integrations relying on the API. A narrower workaround is to audit all active GraphQL tokens and limit them to single-site deployments where cross-site access is meaningless, reducing the blast radius until patching is possible. Do not rely on network-layer filtering alone, as the vulnerability is exploitable by any authenticated token holder from allowed network origins.

Affected VersionsENISA

CMS 5.0.0-RC1 <5.10.11

Affected Packages

euvd cms fix: 5.10.11

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Craft CMS (cpe:2.3:a:craftcms:cms:*:*:*:*:*:*:*:*) is a PHP-based content management system with a first-class GraphQL API. In multi-site deployments, each API token is scoped to one or more allowed sites, enforced at the schema level. The enforcement function, ArgumentManager::prepareArguments(), uses PHP's array_intersect to intersect the caller's supplied siteId values against the token's permitted site list before query execution. CWE-639 (Authorization Through User-Controlled Key) precisely describes the root cause: the mutations accept an attacker-supplied siteId integer that acts as the authorization key, and that key is never validated against the token's scope. The class craft\gql\base\MutationResolver was missing a site-access guard entirely until release 5.10.11, which added requireAllowedSite(). The parallel is the classic IDOR pattern applied to a multi-tenant CMS context.

Know when Cms gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (Hackrate) PRIMARY 8.7 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
vuln.today AI 8.8 HIGH

PR:L reflects required valid token; AC:L because only supplying an integer siteId is needed; full C/I/A High within the targeted site scope.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (Hackrate).

CVSS VectorVendor: Hackrate

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Sep 02, 2026 - 16:02 EUVD
CVE Published
Sep 02, 2026 - 14:19 cve.org
HIGH 8.7

DescriptionCVE.org

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.

Technical POC Analysis

Bug class: CWE-639 - Authorization Bypass Through User-Controlled Key.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

Craft CMS multi-site installations contain an authorization bypass in GraphQL mutation resolvers that allows authenticated users to create, modify, or delete content across all sites within a shared instance, circumventing site-level access controls. Organizations managing multiple brands or customer portals through a single CMS instance face uncontrolled cross-site content manipulation with direct impact to data integrity, business operations, and customer trust.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.3%
Top 83% exploitable
Prevalence
Medium
popular CMS among creative agencies and media sites
Data Quality
6 sources
Confidence: High

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

44
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +44
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

More in Cms

View all
CVE-2020-7357 CRITICAL POC
9.9 Aug 06

Cayin CMS suffers from an authenticated OS semi-blind command injection vulnerability using default credentials. Rated c

CVE-2012-4405 MEDIUM
6.8 Sep 18

Multiple integer underflows in the icmLut_allocate function in International Color Consortium (ICC) Format library (iccl

CVE-2021-47753 CRITICAL POC
9.8 Jan 15

phpKF CMS 3.00 Beta allows unauthenticated PHP file upload by disguising it as a PNG, then renaming it for execution. Po

CVE-2019-9874 CRITICAL POC
9.8 May 31

Deserialization of Untrusted Data in the Sitecore.Security.AntiCSRF (aka anti CSRF) module in Sitecore CMS 7.0 to 7.2 an

CVE-2019-9875 HIGH POC
8.8 May 31

Deserialization of Untrusted Data in the anti CSRF module in Sitecore through 9.1 allows an authenticated attacker to ex

CVE-2026-113358 HIGH POC
8.7 Oct 20

Unauthenticated file disclosure in LavaLite CMS through 10.1.2 allows remote attackers to download private stored files

CVE-2026-56382 HIGH POC
8.6 Jun 21

Authenticated remote code execution in Craft CMS versions 5.5.0 through 5.9.13 allows admin users to execute arbitrary P

CVE-2012-5894 HIGH POC
7.5 Nov 17

SQL injection vulnerability in hava_post.php in Havalite CMS 1.1.0 and earlier allows remote attackers to execute arbitr

CVE-2012-5893 MEDIUM POC
6.8 Nov 17

Unrestricted file upload vulnerability in hava_upload.php in Havalite CMS 1.1.0 and earlier allows remote attackers to e

CVE-2015-2083 MEDIUM POC
6.8 Feb 25

Cross-site request forgery (CSRF) vulnerability in Ilch CMS allows remote attackers to hijack the authentication of admi

CVE-2012-5919 MEDIUM POC
4.3 Nov 19

Multiple cross-site scripting (XSS) vulnerabilities in Havalite 1.0.4 and earlier allow remote attackers to inject arbit

CVE-2025-5429 MEDIUM POC
6.3 Jun 02

A security vulnerability in juzaweb CMS (CVSS 6.3). Risk factors: public PoC available.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy