Skip to main content

Craft CMS EUVDEUVD-2026-41215

| CVE-2026-50280 MEDIUM
Improper Access Control (CWE-284)
2026-07-02 security-advisories@github.com GHSA-43cq-c2gq-pfpw
6.0
CVSS 4.0 · Vendor: github
Share

Severity by source

Vendor (github) PRIMARY
6.0 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:L/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
vuln.today AI
3.1 LOW

AC:H reflects the specific permission prerequisite (move rights on source, read-only on destination); integrity impact is low as writes are confined to section metadata; no confidentiality breach beyond already-readable content.

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

Primary rating from Vendor (github).

CVSS VectorVendor: github

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
X

Lifecycle Timeline

2
Patch available
Jul 02, 2026 - 20:17 EUVD
Analysis Generated
Jul 02, 2026 - 00:28 vuln.today

DescriptionCVE.org

Craft CMS is a content management system (CMS). In versions 5.0.0-RC1 and above prior to 5.9.21, the EntriesController::actionMoveToSection() endpoint gates the destination section only by viewEntries:$section->uid rather than requiring saveEntries permission (the source entry is separately checked via Entry::canMove()). As a result, a low-privileged authenticated control-panel user who can move an entry out of its current section can call moveEntryToSection() to rewrite the entry's sectionId and save it into a section where they have read access but no write access. This breaks the section-level authorization model, letting a user with limited permissions inject content into a protected section and interfere with editorial boundaries, approval workflows, and section-specific business logic. This issue has been fixed in version 5.9.21.

AnalysisAI

Improper access control in Craft CMS 5.x allows a low-privileged, authenticated control-panel user to inject content into sections where they hold only read access, bypassing the editorial authorization model. The EntriesController::actionMoveToSection() endpoint validates the destination section using viewEntries permission rather than the required saveEntries permission, enabling an attacker to rewrite an entry's sectionId and persist it into protected sections. No public exploit has been identified at time of analysis, but the fix is available in version 5.9.21.

Technical ContextAI

Craft CMS is a PHP-based content management system with a role- and permission-gated control panel. The affected component is the EntriesController, which handles entry lifecycle operations including cross-section moves. The root cause is classified under CWE-284 (Improper Access Control): the actionMoveToSection() method separately checks Entry::canMove() on the source entry but gates the destination section only by viewEntries:$section->uid rather than the more restrictive saveEntries permission. This authorization asymmetry means the write operation into the destination section is never gated on write capability. Affected CPE corresponds to craftcms/cms versions 5.0.0-RC1 through 5.9.20. The CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:L) confirms the attack is network-reachable with low complexity, low privilege, and a specific attack prerequisite (AT:P) reflecting the need for a particular permission configuration.

RemediationAI

Upgrade to Craft CMS 5.9.21, which contains the patch committed at https://github.com/craftcms/cms/commit/0a6b916f6367b0162b2eaf2366add67b45fa98ea. This is the vendor-confirmed fix per the GitHub Security Advisory GHSA-43cq-c2gq-pfpw. If an immediate upgrade is not possible, a compensating control is to audit and restrict which control-panel users hold the ability to move entries across sections, reducing the pool of accounts capable of triggering this flow. Additionally, organizations can temporarily disable cross-section move functionality via custom permission assignments if the CMS configuration supports it. These workarounds reduce exposure but do not remediate the underlying authorization defect and should be treated as interim measures only.

Share

EUVD-2026-41215 vulnerability details – vuln.today

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