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

•33 minutes ago•CVE-2026-105647
4.0

CVE-2026-105647: Server-Side Request Forgery via Favicon Probing in Ghost CMS

An unauthenticated Server-Side Request Forgery (SSRF) vulnerability exists in Ghost CMS from version 6.54.1 to 6.65.0. The vulnerability stems from a validation bypass in the favicon resolution logic within the bookmark-fetching subsystem, which allows remote, unauthenticated attackers to trigger arbitrary HTTP requests to the local host and internal networks. This bypass circumvents the custom DNS-level IP blocklist controls configured globally in the application.

Alon Barad
Alon Barad
1 views•8 min read
•about 2 hours ago•CVE-2026-106450
5.3

CVE-2026-106450: Denial of Service via Eager Resource Allocation in lz4-java LZ4FrameInputStream

A resource allocation vulnerability (CWE-770) in lz4-java before version 1.11.4 allows an unauthenticated remote attacker to trigger CPU exhaustion and high garbage collection overhead by streaming empty concatenated LZ4 frames.

Alon Barad
Alon Barad
4 views•8 min read
•about 3 hours ago•CVE-2026-106449
3.7

CVE-2026-106449: Stack Overflow via Uncontrolled Recursion in yawkat lz4-java

A Denial of Service (DoS) vulnerability exists in the yawkat fork of lz4-java prior to version 1.11.4. Under specific non-default configurations (stopOnEmptyBlock = false), parsing crafted streams with a large sequence of contiguous empty LZ4 blocks triggers uncontrolled recursion inside the LZ4BlockInputStream.refill() method, causing stack exhaustion and thread termination.

Alon Barad
Alon Barad
3 views•6 min read
•about 3 hours ago•CVE-2026-76485
9.8

CVE-2026-76485: Remote Code Execution in Cisco NX-OS VXLAN OAM (NGOAM)

CVE-2026-76485 is a critical stack-based buffer overflow vulnerability in the VXLAN OAM (NGOAM) parsing component of Cisco NX-OS Software. The flaw enables an unauthenticated, remote attacker to execute arbitrary code with root privileges or trigger a denial of service on affected Nexus switches. This vulnerability is triggered through crafted packets sent to an IP interface. No workarounds are currently available to mitigate the vulnerability while preserving the NGOAM functionality. Cisco has published software patches to address this flaw.

Alon Barad
Alon Barad
6 views•6 min read
•about 4 hours ago•CVE-2026-106451
7.3

CVE-2026-106451: Local Privilege Escalation via JNI Extraction TOCTOU in lz4-java

A local privilege escalation and code execution vulnerability exists in the yawkat fork of lz4-java when extracting its bundled JNI shared library into the system temporary directory. Predictable path derivation and lack of exclusive file creation flags allow a local attacker to hijack library loading via a race condition.

Alon Barad
Alon Barad
6 views•6 min read
•about 5 hours ago•CVE-2026-105698
5.4

CVE-2026-105698: Missing Authorization in Deprecated Chat Vertices Endpoints in Langflow

A missing authorization vulnerability in Langflow versions 1.0.0 through 1.10.0 allows authenticated users (and unauthenticated users in versions prior to 1.7.2) to access private workflow structures and execute graph components by targeting deprecated API endpoints.

Amit Schendel
Amit Schendel
5 views•8 min read