CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-33162

CVE-2026-33162: Authorization Bypass in Craft CMS Entry Relocation

Alon Barad
Alon Barad
Software Engineer

Mar 24, 2026·6 min read·22 visits

Executive Summary (TL;DR)

An authorization bypass in Craft CMS allows authenticated users with standard Control Panel access to relocate content entries across sections without proper validation. The vulnerability is patched in versions 5.9.14 and 4.17.8 by implementing explicit server-side authorization checks.

Craft CMS versions 5.3.0 to 5.9.13 and 4.x prior to 4.17.8 contain a Missing Authorization vulnerability (CWE-862) within the Control Panel. Authenticated users with baseline administrative access can bypass intended UI restrictions to arbitrarily relocate content entries between sections without possessing the required section-specific permissions.

Vulnerability Overview

Craft CMS contains a missing authorization vulnerability (CWE-862) within its Control Panel administrative interface. The flaw exists in the entry management subsystem, specifically affecting the component responsible for relocating content entries between different hierarchical sections. This vulnerability affects versions 5.3.0 through 5.9.13, as well as 4.x versions prior to 4.17.8.

The system utilizes a granular permission model to restrict user actions on a per-section basis. Users require specific saveEntries:{sectionUid} permissions to modify content within designated areas. The vulnerability emerges because the application enforces these restrictions primarily at the user interface level, hiding the Move action from unauthorized users while failing to validate the corresponding backend HTTP request.

An authenticated user with baseline Control Panel access (accessCp) bypasses intended editorial restrictions by exploiting this discrepancy. By issuing direct HTTP requests to the backend endpoint, the user relocates entries into sections where they lack write or view privileges. This breaks the principle of least privilege and compromises the integrity of the content management structure.

Root Cause Analysis

The root cause of this vulnerability lies in the EntriesController::actionMoveToSection method, which processes the POST request for entry relocation. The controller receives an array of entryIds and a target sectionId from the client. It then invokes the internal service method Craft::$app->getEntries()->moveEntryToSection() to execute the data modification.

The controller assumes that any request reaching this endpoint originates from a user who has already passed the UI-level permission checks. The actionMoveToSectionModalData function correctly evaluates the user's permissions and prevents the rendering of the move modal for unauthorized actors. The action handler itself lacks any server-side authorization checks to verify the user's specific access rights to the source entries or the destination section.

Because the endpoint operates without validating the $user->can('saveEntries:{sectionUid}') constraint, the system processes the state change based solely on the presence of a valid session and a generic accessCp privilege. The internal moveEntryToSection service method operates at a lower level and trusts the controller to perform appropriate access control validation before passing the operation down the stack.

Code Analysis

An examination of the fix implemented in commit 3c1ab1c4445dd9237855a66e6a06ecf3591a718e reveals the structural changes required to remediate the missing authorization check. The vendor introduced a centralized permission validation mechanism by adding a new public method craft\elements\Entry::canMove(). This method encapsulates the complex logic required to verify if the active user holds the necessary rights to relocate a specific entry object.

In the vulnerable version, the EntriesController::actionMoveToSection method processes the input data without evaluating the user's permissions against the target section or the specific entries. The controller simply accepts the parameters and executes the move operation.

The patched version introduces two distinct authorization boundaries within the controller action. First, it enforces a broad check against the destination section using $this->requirePermission("viewEntries:$section->uid"). Second, it iterates over the provided array of entries to validate specific movement rights.

// Patched code segment demonstrating the iterative authorization check
$this->requirePermission("viewEntries:$section->uid");
 
foreach ($entries as $entry) {
    if (!$entry->canMove()) {
        throw new ForbiddenHttpException('User is not authorized to perform this action.');
    }
}

This iterative validation ensures that the user possesses the necessary administrative rights for every individual entry involved in the bulk operation. If any single entry fails the canMove() check, the controller terminates the request and throws a ForbiddenHttpException.

Exploitation

Exploitation of CVE-2026-33162 requires the attacker to possess an active session on the Craft CMS instance with the baseline accessCp permission. The attacker acquires the unique identifiers (entryIds) for the target content and the sectionId of the destination structural unit. These identifiers are often guessable, sequential, or enumerable through other low-privileged Control Panel interfaces.

The attack executes by bypassing the standard administrative user interface and sending a raw HTTP POST request directly to the vulnerable endpoint. The required URL path is /index.php?p=admin/actions/entries/move-to-section. The payload structure mandates a JSON body containing the target section, the array of entries, and a valid Anti-CSRF token retrieved from the attacker's active session.

{
  "sectionId": "TARGET_SECTION_ID",
  "entryIds": ["ENTRY_ID_1", "ENTRY_ID_2"],
  "CRAFT_CSRF_TOKEN": "valid_token_value"
}

Upon receiving the crafted request, the server processes the data structure and executes the relocation logic. The application responds with an HTTP 200 OK status, confirming the successful movement of the targeted entries. The attacker achieves unauthorized modification of the content hierarchy without triggering any application-level permission errors.

Impact Assessment

The primary impact of this vulnerability is a high-severity breach of data integrity within the application's content management structure. Attackers arbitrarily reorganize the site hierarchy, moving published content into restricted or unpublished sections, or extracting drafts from restricted areas into publicly visible sections. This nullifies the application's intended editorial workflow and access control model.

While the confidentiality of the underlying server infrastructure remains unaffected, the unauthorized modification of content structures carries significant operational risk. Organizations relying on strict compartmentalization of content editing teams will find their administrative boundaries compromised. An attacker acting as a low-privileged editor disrupts the work of other departments or exposes unfinished material to production environments.

The CVSS v4.0 base score of 4.9 reflects the network-based attack vector and the lack of complex attack requirements. The severity is constrained to Medium because the attacker requires prior authentication and baseline Control Panel access, and the vulnerability does not permit remote code execution or underlying database exfiltration. Within the context of a CMS permission model, the integrity impact remains high.

Remediation

Organizations must update their Craft CMS installations to the patched versions immediately. The vendor addressed the vulnerability in Craft CMS version 5.9.14 and version 4.17.8. Applying these updates introduces the missing server-side authorization checks and prevents direct HTTP requests from bypassing the permission model.

In environments where immediate patching is not feasible, administrators restrict the accessCp permission to highly trusted personnel. Since the vulnerability requires this baseline administrative access, limiting the pool of users who authenticate to the Control Panel reduces the available attack surface. Organizations should audit current role assignments to ensure least privilege principles are enforced.

Security teams implement detection mechanisms to identify potential exploitation attempts. Monitoring web application firewall (WAF) logs or reverse proxy access logs for unexpected POST requests to the /actions/entries/move-to-section endpoint provides visibility into unauthorized relocation activities. Analyzing the source IP addresses and associated user sessions of these requests identifies anomalous behavior from low-privileged accounts.

Official Patches

Craft CMSSource code patch fixing the vulnerability
Craft CMSRelease notes for version 5.9.14

Fix Analysis (1)

Technical Appendix

CVSS Score
4.9/ 10
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N/E:U

Affected Systems

Craft CMS 5.xCraft CMS 4.x

Affected Versions Detail

Product
Affected Versions
Fixed Version
Craft CMS
Craft CMS
>= 5.3.0, < 5.9.145.9.14
Craft CMS
Craft CMS
>= 4.0.0, < 4.17.84.17.8
AttributeDetail
CWE IDCWE-862
Attack VectorNetwork
CVSS v4.04.9
ImpactHigh Integrity Loss
Exploit StatusProof of Concept
CISA KEVNot Listed

MITRE ATT&CK Mapping

T1068Exploitation for Privilege Escalation
Privilege Escalation
CWE-862
Missing Authorization

The software does not perform an authorization check when an actor attempts to access a resource or perform an action.

Vulnerability Timeline

Patch committed to Craft CMS repository.
2026-02-25
Craft CMS 5.9.14 and 4.17.8 officially released.
2026-02-25
CVE-2026-33162 and GHSA-f582-6gf6-gx4g publicly disclosed.
2026-03-24

References & Sources

  • [1]Craft CMS Security Advisory GHSA-f582-6gf6-gx4g
  • [2]Fix Commit in Repository
  • [3]Craft CMS 5.9.14 Release Notes
  • [4]CVE-2026-33162 Detail

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•1 day ago•CVE-2026-58197
8.8

CVE-2026-58197: Host Escape and Lateral Movement via Insecure Container Network Defaults in ToolHive

A high-severity access control vulnerability in ToolHive CLI before v0.30.1 and ToolHive Studio before v0.38.0 allows local containerized MCP servers to bypass network isolation. This enables malicious workloads to establish TCP/IP connections to administrative and control plane endpoints exposed on the host loopback interface.

Amit Schendel
Amit Schendel
8 views•8 min read
•1 day ago•CVE-2026-63405
5.9

CVE-2026-63405: Insufficient Verification of Data Authenticity in AnyCable Pusher REST API

AnyCable is a real-time communication server. Prior to version 1.6.15, its Pusher-compatible REST API suffered from an authentication bypass vulnerability because it failed to verify that the request body matched the signature-validated body_md5 parameter. This allows attackers to perform replay attacks with modified body contents.

Amit Schendel
Amit Schendel
9 views•5 min read
•1 day ago•CVE-2026-64847
6.8

CVE-2026-64847: Indefinite Denial of Service via Undrained Stderr in AnyIO Process Pool Workers

A denial-of-service vulnerability exists in AnyIO prior to version 4.14.2. Standard error streams of process-pool workers are connected to an operating system pipe that is never drained by the parent process. This allows a worker to fill the pipe buffer and deadlock indefinitely.

Amit Schendel
Amit Schendel
8 views•6 min read
•2 days ago•CVE-2026-63349
7.0

CVE-2026-63349: Privilege Dropping Bypass and Denial of Service in AnyIO Subprocess Module

CVE-2026-63349 is a critical privilege-dropping bypass vulnerability in the AnyIO asynchronous framework (versions 4.14.0 and 4.14.1) on POSIX platforms. Due to a variable assignment typo, supplementary groups specified by the developer are not correctly propagated to the execution backend, resulting in subprocesses retaining the parent process's elevated supplementary group permissions.

Alon Barad
Alon Barad
14 views•5 min read
•2 days ago•CVE-2026-63406
5.9

CVE-2026-63406: Information Disclosure via Insecure Telemetry and Hardcoded Credentials in AnyCable-Go

CVE-2026-63406 is an information disclosure vulnerability in AnyCable-go prior to version 1.6.15. The built-in telemetry client is enabled by default with a hardcoded public authentication token ('secret'). This client digests highly sensitive configuration parameters and command-line arguments, including JWT secrets and RPC secrets, into a stable SHA-256 fingerprint. This fingerprint is sent over public networks, exposing those administrative secrets to offline dictionary and brute-force attacks if intercepted.

Alon Barad
Alon Barad
7 views•5 min read
•2 days ago•CVE-2026-84992
6.1

CVE-2026-84992: Cross-Site Scripting (XSS) via Fenced Code Block Parsing in md-editor-v3

CVE-2026-84992 is a Cross-Site Scripting (XSS) vulnerability affecting md-editor-v3 before version 6.5.4. It occurs because the fenced-code block language parser directly interpolates unescaped language metadata into unquoted HTML attributes inside the custom rendering callback. This bypasses the built-in XSSPlugin which runs during the parsing phase, before rendering.

Amit Schendel
Amit Schendel
9 views•6 min read