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-14793

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

Amit Schendel
Amit Schendel
Senior Security Researcher

Aug 6, 2026·6 min read·2 visits

Executive Summary (TL;DR)

Missing admin authorization check in Craft CMS's GlobalsController allows low-privilege authenticated users to reorder global sets via direct API endpoint calls.

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.

Vulnerability Overview

Craft CMS utilizes "Global Sets" to manage site-wide variables and content modules. These components are handled through the administrative Control Panel (CP) via controllers designed to manage structural operations. The GlobalsController exposed a specific action route, actionReorderSets(), meant exclusively for system administrators to alter the sequential layout and prioritization of these global configurations.

This endpoint resides in the core routing configuration, rendering it accessible via POST requests directed to /actions/globals/reorder-sets or through query parameters like ?p=actions/globals/reorder-sets. However, in vulnerable versions up to 4.18.0.1, the application did not apply corresponding controller-level restriction mechanisms. Any authenticated session with basic CP access could access and invoke the endpoint.

This flaw falls under CWE-285 (Improper Authorization) and CWE-639 (Authorization Bypass Through User-Controlled Key). While standard content management operations are segregated by user roles and specific permissions, this route bypassed administrative boundaries. Consequently, low-privilege users could modify the database and global configuration file sequences without proper credentials.

Root Cause Analysis

The root cause of CVE-2026-14793 lies in the omission of authorization checks within the execution pipeline of the controller method. Craft CMS controllers typically execute filter chains or explicit security checks before handling request parameters. Administrative controllers utilize the $this->requireAdmin() helper method to enforce that the current user context contains administrative privileges.

In the vulnerable configuration of GlobalsController.php, the action method actionReorderSets only enforced transport-layer constraints. It invoked $this->requirePostRequest() to ensure the request method was HTTP POST and $this->requireAcceptsJson() to enforce JSON transport format. However, it failed to perform user-level validation, allowing any authenticated session to reach the underlying service call.

Furthermore, the service layer function Craft::$app->getGlobals()->reorderSets() operates under the assumption that the calling context has already performed necessary authorization validation. This architectural pattern delegates boundary enforcement entirely to the controller layer. When a controller action fails to invoke $this->requireAdmin(), the underlying database operations run without validation, resulting in structural state updates.

Code Analysis

Analysis of the vulnerable source code highlights the security gap in src/controllers/GlobalsController.php (commit f801317b13e4a87d704a50a2807a0af83325c452). The method lacked any checks validating the active user's permissions, directly invoking parameter extraction and service layer execution immediately after confirming transport validation.

// VULNERABLE CODE (<= 4.18.0.1)
public function actionReorderSets(): Response
{
    $this->requirePostRequest();
    $this->requireAcceptsJson();
 
    // Missing authorization check here
    $setIds = Json::decode($this->request->getRequiredBodyParam('ids'));
    Craft::$app->getGlobals()->reorderSets($setIds);
}

The function decodes the array of IDs sent in the request parameter ids and directly processes the update database sequence. Since there is no controller gate, the PHP pipeline proceeds blindly to the persistence layer.

// PATCHED CODE (>= 4.18.1 / 5.10.3)
public function actionReorderSets(): Response
{
    $this->requirePostRequest();
    $this->requireAcceptsJson();
    $this->requireAdmin(); // Enforces administrative context before execution
 
    $setIds = Json::decode($this->request->getRequiredBodyParam('ids'));
    Craft::$app->getGlobals()->reorderSets($setIds);
}

The integration of $this->requireAdmin() successfully forces execution flow verification against Yii2 session properties. If the user session lacks the active administrative flag, the application halts execution and outputs a 403 Forbidden JSON error block, neutralizing the bypass vector.

Exploitation Mechanics

To exploit this vulnerability, an attacker must first obtain a valid, authenticated Control Panel session. This prerequisite restricts the attack surface to registered users, such as low-privileged editors, translators, or guest authors. Once logged in, the attacker can leverage the browser session's cookies and retrieve the current application-wide CSRF token from the Control Panel's DOM.

The attacker then crafts a direct POST request targeted at /index.php?p=actions/globals/reorder-sets. The request payload requires the parameter ids set to a JSON-formatted string array of integers representing the desired configuration order. This can be submitted either via standard application/x-www-form-urlencoded form encoding or application/json headers, containing the appropriate cookie and CSRF header.

POST /index.php?p=actions/globals/reorder-sets HTTP/1.1
Host: target-craftcms.local
User-Agent: Mozilla/5.0 (Security-Researcher)
Accept: application/json
Content-Type: application/json
Cookie: CraftSessionId=8abc01df823de7e123654;
X-CSRF-Token: your_csrf_token_here
Connection: close
 
{
  "ids": "[3,2,1]"
}

Upon processing, the backend decodes the requested layout sequence and modifies the database records. In environments where Craft CMS tracks configuration changes in files (Project Config), this action additionally writes state changes directly to the project configuration directory. These configuration modifications are then tracked by version control, potentially introducing persistence anomalies across deployments.

Impact Assessment

The direct impact of CVE-2026-14793 is categorized as partial loss of integrity. Because an unauthorized user can modify the sequential positioning of global content sets, the presentation layer of the public website may become distorted or unreadable. While this does not immediately allow remote code execution, manipulating application-wide variables can lead to secondary injection vectors if downstream template files process global attributes insecurely.

Additionally, Craft CMS utilizes a Project Config system to store structure and configuration in YAML files. The execution of the unauthorized global reordering triggers a serialization process that updates these configuration files on the local filesystem. In automated continuous integration pipelines, this modification could be committed to git, leading to configuration drift or pipeline failures.

Based on the CVSS v4.0 metrics, this vulnerability has a base score of 5.3 (CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N). The vulnerability requires basic user credentials (PR:L) but is executable remotely over the network with low complexity. This highlights the risk of privilege escalation within corporate content-management networks.

Remediation and Mitigation

The primary remediation is to upgrade Craft CMS to version 4.18.1 (for 4.x installations) or 5.10.3 (for 5.x installations). These versions integrate the necessary role restriction check into the controller, securing the execution path. Organizations must apply the updates using Composer or the official Control Panel updater to ensure the patch is compiled into the codebase.

For environments where an immediate software upgrade is not feasible, administrators should audit and restrict Control Panel access. Disabling access to the Control Panel for all non-administrative users provides an effective temporary mitigation. Alternatively, custom access policies or Web Application Firewalls (WAF) can block requests targeting the specific URI path /actions/globals/reorder-sets for non-admin IP blocks.

This flaw underscores the importance of a defense-in-depth model in modern software architectures. Developers should implement security checks at both the controller boundary and the service layer. Relying solely on controllers to gate administrative functions introduces single points of failure, where an omitted helper call exposes the entire database layer to unauthorized manipulation.

Official Patches

CraftCraft CMS v4.18.1 release patch advisory
CraftCraft CMS v5.10.3 release patch advisory

Fix Analysis (1)

Technical Appendix

CVSS Score
5.3/ 10
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N
EPSS Probability
0.22%
Top 87% most exploited

Affected Systems

Craft CMS

Affected Versions Detail

Product
Affected Versions
Fixed Version
Craft CMS
Craft
<= 4.18.0.14.18.1
Craft CMS
Craft
5.x < 5.10.35.10.3
AttributeDetail
CWE IDCWE-285
Attack VectorNetwork
CVSS v4.05.3 (Medium)
EPSS Score0.00224 (Percentile: 13.08%)
ImpactPartial Integrity Modification
Exploit StatusProof of Concept
KEV StatusNot Listed

MITRE ATT&CK Mapping

T1548Abuse Elevation Control Mechanism
Privilege Escalation
T1078Valid Accounts
Initial Access
T1068Exploitation for Privilege Escalation
Privilege Escalation
CWE-285
Improper Authorization

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

Vulnerability Timeline

Release of vulnerable version 4.18.0.1
2026-05-15
Authorization bypass fixed by vendor via commit 9bd05c91e6a7e6da5e949ec41a31c220c059aa04
2026-05-22
Patched releases 4.18.1 and 5.10.3 made available
2026-05-25
Official public vulnerability disclosure and CVE publication
2026-07-06

References & Sources

  • [1]GitHub Fix Commit
  • [2]GitHub v4 Release Notes
  • [3]GitHub v5 Release Notes
  • [4]Official NVD Record
  • [5]CVE.org Record
  • [6]VulDB Vulnerability Entry
  • [7]VulDB CTI Feed Indicators
  • [8]VulDB Submission Record
  • [9]VulDB CVE Entry Summary

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

•43 minutes ago•CVE-2026-71554
5.3

CVE-2026-71554: HTTP Request Smuggling via Duplicate Host Headers in h2 Protocol Stack

A protocol-parsing vulnerability in the pure-Python HTTP/2 library 'h2' (versions <= 4.4.0) allows unauthenticated remote attackers to perform HTTP Request Smuggling (CWE-444). The vulnerability exists because the library does not validate the uniqueness of 'Host' headers in incoming HTTP/2 request streams. When an upstream gateway parses such requests and downgrades them to HTTP/1.1 for internal backend servers, the resulting stream contains duplicate Host headers, which leads to parsing inconsistency and potential bypass of security filters.

Alon Barad
Alon Barad
0 views•5 min read
•about 2 hours ago•GHSA-957R-QF9P-67XW
4.9

GHSA-957R-QF9P-67XW: Arbitrary File Read via SplFileObject in Craft CMS Twig Extension

An information disclosure vulnerability in Craft CMS allows users with administrative or non-sandboxed template-authoring privileges to read arbitrary system and configuration files. The issue stems from an incomplete class instantiation blocklist in the Twig template extension, which omitted PHP's built-in SplFileObject class.

Alon Barad
Alon Barad
2 views•6 min read
•about 4 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
3 views•7 min read
•about 5 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 6 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
3 views•6 min read
•about 7 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