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·18 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

•about 1 hour ago•CVE-2026-14793
5.3

CVE-2026-14793: Authorization Bypass in Craft CMS GlobalsController actionReorderSets

An authorization bypass vulnerability in Craft CMS allows authenticated control panel users with low privileges to reorder global sets. This alters structure and writes to the project configuration database schema without administrative rights.

Amit Schendel
Amit Schendel
1 views•6 min read
•about 2 hours ago•CVE-2026-71438
2.4

CVE-2026-71438: Prototype Pollution in Mermaid Configuration APIs

Prior to versions 10.9.8 and 11.16.1, Mermaid is vulnerable to prototype pollution via its deep-merge utility function assignWithDepth. This helper is invoked by public configuration-setting interfaces, specifically mermaid.initialize, mermaidAPI.setConfig, and mermaidAPI.updateSiteConfig. Because assignWithDepth recursively merges developer-provided properties into Mermaid's internal configuration state without proper sanitization, an attacker who can control or influence the configuration payload can corrupt the global Object.prototype. This vulnerability can lead to security bypasses, cross-site scripting (XSS), or execution flow modifications in applications using vulnerable Mermaid integrations.

Alon Barad
Alon Barad
2 views•7 min read
•about 3 hours ago•CVE-2026-67309
7.8

CVE-2026-67309: Path Traversal and Authentication Bypass in Traefik RewriteTarget Middleware

A high-severity path traversal vulnerability exists in Traefik's Kubernetes Ingress NGINX provider. The flaw resides in the RewriteTarget middleware, which is auto-generated when an Ingress resource specifies the `nginx.ingress.kubernetes.io/rewrite-target` annotation. This allows remote, unauthenticated attackers to bypass route-level authentication and access restricted downstream endpoints by exploiting a parser differential.

Alon Barad
Alon Barad
2 views•7 min read
•about 4 hours ago•CVE-2026-65600
7.8

CVE-2026-65600: Authentication Bypass via Path Traversal in Traefik ReplacePathRegex Middleware

CVE-2026-65600 is a path traversal vulnerability in the ReplacePathRegex middleware component of Traefik. An unauthenticated remote attacker can exploit the vulnerability to inject directory traversal sequences. When Traefik forwards the resulting un-normalized path, downstream backend web servers normalize the request to execute administrative or protected paths, bypassing gateway-enforced security policies.

Amit Schendel
Amit Schendel
2 views•6 min read
•about 5 hours ago•CVE-2026-54763
10.0

CVE-2026-54763: Authentication Bypass and Identity Spoofing in Traefik Middlewares via Header Normalization Discrepancies

A critical authentication bypass and context spoofing vulnerability exists in Traefik's BasicAuth, DigestAuth, and ForwardAuth middlewares prior to versions 2.11.51, 3.6.22, and 3.7.6. The flaw arises because Traefik's header cleanup mechanisms rely on Go's standard library header canonicalization, which does not modify or delete headers containing underscores. Consequently, unauthenticated remote attackers can inject custom underscore-variant headers (e.g., X_Auth_User) that bypass Traefik's stripping filters and reach backend application servers. When downstream backends normalize both hyphens and underscores into the same environment variables, the attacker's spoofed identity value is processed as trusted authorization data.

Alon Barad
Alon Barad
4 views•7 min read
•about 6 hours ago•CVE-2026-71324
7.0

CVE-2026-71324: Cross-User Response Poisoning in Traefik via HTTP/2 and HTTP/3 CONNECT Handling

CVE-2026-71324 is a high-severity HTTP request smuggling vulnerability in the Traefik reverse proxy. It allows an unauthenticated remote attacker to achieve cross-user response poisoning when Traefik is configured to route HTTP/2 or HTTP/3 CONNECT requests to an HTTP/1.1 upstream backend. By sending a crafted CONNECT request that is subsequently rejected by the backend with a keep-alive non-2xx response, the attacker can leave smuggled requests within the shared connection pool, which are then served to subsequent clients.

Amit Schendel
Amit Schendel
5 views•7 min read