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

CVE-2026-33160: Unauthenticated Information Disclosure via Authorization Bypass in Craft CMS

Alon Barad
Alon Barad
Software Engineer

Mar 24, 2026·6 min read·27 visits

Executive Summary (TL;DR)

Unauthenticated users can view private assets by exploiting a missing authorization check in the Craft CMS image transformation endpoint, leading to information disclosure.

Craft CMS suffers from a missing authorization vulnerability in its image transformation endpoint. Unauthenticated attackers can generate and retrieve transformed versions of private assets by exploiting an insecure direct object reference (IDOR) flaw in the AssetsController.

Vulnerability Overview

Craft CMS contains a moderate-severity information disclosure vulnerability within its asset management subsystem. The vulnerability resides specifically in the AssetsController component, which handles dynamic image transformations. This component exposes an endpoint that processes user-supplied parameters to generate derived works from original media files.

The core issue is a missing authorization check (CWE-862) that leads to an insecure direct object reference (CWE-639). When a user requests an image transformation via the assets/generate-transform endpoint, the application fails to verify if the requester holds the requisite "View" permissions for the target asset. This failure allows unauthenticated, anonymous users to supply arbitrary asset identifiers and successfully trigger the transformation process.

While the base severity score is evaluated as Low (CVSS 2.7), the vulnerability introduces a direct breach of confidentiality for systems relying on Craft CMS to secure private media. The exposure is limited to transformed derivatives rather than the full-resolution source files, but this distinction is often negligible when the visual content itself is the sensitive material.

Root Cause Analysis

The actionGenerateTransform method in src/controllers/AssetsController.php processes requests to dynamically resize, crop, or alter images. The application relies on an assetId to locate the source file and a handle to determine the specific transformation parameters. These values are extracted directly from the incoming POST request body.

Prior to the patch, the execution flow within this method contained a critical oversight in its primary request handling branch. The code successfully retrieved the POST parameters and instantiated the transformation process, but it completely omitted any contextual permission checks. The system blindly trusted the presence of a valid assetId without correlating it to the current user's session or authorization state.

This logical disconnect creates a state where private assets residing in restricted, non-web-accessible volumes are temporarily exposed. The transformation subsystem generates the derivative file and places it into a public cache or serves it via a cryptographically signed URL. By successfully invoking the transformation process, the attacker bridges the gap between a secure storage volume and public accessibility.

Code Analysis and Patch Implementation

The vulnerability is localized to a specific conditional branch within the AssetsController. When processing standard transform generation requests, the controller drops into an else block to parse the assetId and handle parameters. In the vulnerable implementation, this block immediately accesses the request parameters without invoking the system's permission enforcement mechanisms.

@@ -1142,6 +1142,7 @@ public function actionGenerateTransform(?int $transformId = null): Response
                 throw new ServerErrorHttpException('Image transform cannot be created.', previous: $e);
             }
         } else {
+            $this->requirePermission('accessCp'); 
             $assetId = $this->request->getRequiredBodyParam('assetId');
             $handle = $this->request->getRequiredBodyParam('handle');

The remediation introduces a mandatory $this->requirePermission('accessCp') invocation directly at the start of the execution block. This single line of code fundamentally alters the endpoint's accessibility profile. The controller now abruptly terminates the request and returns an HTTP 403 Forbidden response if the caller lacks Control Panel access privileges.

Furthermore, the patch implements defense-in-depth measures across the broader controller. The developers identified related endpoints, such as actionPreviewThumb and actionEditImage, and enforced volume-level permission checks using requireVolumePermissionByAsset. This comprehensive approach ensures that variant attack paths targeting different asset manipulation routines are simultaneously mitigated.

Exploitation Methodology

Exploitation requires minimal prerequisites. An attacker only requires network access to the target Craft CMS deployment and knowledge of standard transformation handles. The target system must have an accessible assets/generate-transform route, which is available by default in vulnerable configurations. No authentication or specialized network positioning is necessary.

The attack begins with the enumeration of valid asset identifiers. Because assetId values in Craft CMS are typically assigned as sequential integers, an attacker can iterate through a numerical range. The attacker issues a POST request containing a guessed assetId and a common transform handle, such as a standard thumbnail specification.

Upon receiving the request, the vulnerable controller processes the image and responds with a JSON payload containing a signed URL for the newly generated asset. The attacker completes the exploitation sequence by issuing a GET request to this signed URL, thereby retrieving the image bytes. This process bypasses all volume-level restrictions that natively protect the source file.

Impact Assessment

The primary security consequence of CVE-2026-33160 is unauthorized information disclosure. Attackers gain read access to the visual contents of arbitrary private assets managed by the CMS. This exposure directly violates the confidentiality guarantees provided by private storage volumes in Craft CMS.

The technical impact is restricted strictly to transformed derivatives. Attackers cannot extract the original, unaltered source files, nor can they retrieve associated metadata stored within the database. The transformation process frequently involves downscaling or compression, meaning the disclosed files may lack the fidelity of the source material.

Despite this limitation, the contextual impact can be substantial depending on the target environment. Installations utilizing Craft CMS to manage embargoed product imagery, confidential medical documents, or private user uploads are at significant risk. The disclosure of a high-resolution thumbnail is often sufficient to compromise the sensitive information contained within the original asset.

Remediation Guidance

The definitive mitigation strategy is to upgrade the Craft CMS installation to a patched version. Administrators running the 4.x release line must update to version 4.17.8 or later. Deployments operating on the 5.x release line require an update to version 5.9.14 or later. These releases contain the necessary code changes to enforce proper authorization constraints on the AssetsController.

Organizations should review their user group configurations to verify the principle of least privilege. The patched implementation specifically requires the accessCp permission to interact with the transform generation endpoint. Administrators must ensure that this permission is exclusively granted to trusted personnel who require access to the Control Panel.

In environments where immediate patching is strictly prohibited by operational constraints, network-level mitigations can be temporarily applied. Web Application Firewall (WAF) rules can be configured to block external, unauthenticated POST requests targeting the /assets/generate-transform URI. This temporary measure prevents exploitation from anonymous actors while allowing internal administrators to utilize the functionality.

Official Patches

Craft CMSOfficial GitHub Security Advisory
Craft CMSCraft CMS 4.17.8 Release Notes
Craft CMSCraft CMS 5.9.14 Release Notes

Fix Analysis (1)

Technical Appendix

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

Affected Systems

Craft CMS 4.xCraft CMS 5.x

Affected Versions Detail

Product
Affected Versions
Fixed Version
Craft CMS
Pixel & Tonic
4.0.0-RC1 < 4.17.84.17.8
Craft CMS
Pixel & Tonic
5.0.0-RC1 < 5.9.145.9.14
AttributeDetail
CWE IDCWE-862 / CWE-639
Attack VectorNetwork
CVSS v4.0 Score2.7
ImpactInformation Disclosure
Exploit StatusProof of Concept
Authentication RequiredNone

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

Vulnerability reported to Pixel & Tonic.
2026-02-24
Craft CMS releases patched versions 4.17.8 and 5.9.14.
2026-02-25
Vulnerability publicly disclosed under CVE-2026-33160 and GHSA-5pgf-h923-m958.
2026-03-24

References & Sources

  • [1]GHSA-5pgf-h923-m958: Information Disclosure in Craft CMS
  • [2]Fix Commit: 7290d91639e5e3a4f7e221dfbef95c9b77331860
  • [3]CVE-2026-33160 Record

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 10 hours ago•GHSA-6GQW-JQV7-V88M
7.2

GHSA-6GQW-JQV7-V88M: Multi-Tenant Isolation Bypass in stigmem-node via Missing SQL Tenant Predicates

A critical vulnerability exists in the stigmem-node package when running the opt-in stigmem-plugin-multi-tenant plugin. Due to a failure to enforce tenant-scoping filters on database queries within the decay sweep, quarantine moderation, and right-to-be-forgotten (RTBF) subsystems, an authorized caller belonging to one tenant can access, modify, and delete facts belonging to all other tenants. This broken object level authorization (BOLA) vulnerability allows cross-tenant data manipulation and information leakage.

Amit Schendel
Amit Schendel
6 views•6 min read
•about 11 hours ago•GHSA-V3F4-W7R7-V3HM
8.6

GHSA-v3f4-w7r7-v3hm: Remote Command Execution via Origin Validation Error in Uni-CLI Legacy HTTP Transport

An origin validation error and cross-site request forgery vulnerability in @zenalexa/unicli prior to version 0.225.2 allows cross-origin web applications to execute arbitrary tools on a user's local machine via the legacy stateless HTTP transport.

Amit Schendel
Amit Schendel
6 views•7 min read
•about 11 hours ago•GHSA-C795-2G9C-J48M
8.2

GHSA-C795-2G9C-J48M: Remote Path Traversal and Arbitrary File Write in EverOS Memory Ingestion

EverOS versions 1.0.0 and earlier contain a path traversal vulnerability in the user memory ingestion endpoint. By exploiting this flaw, unauthenticated network attackers can escape the designated database memory root and write arbitrary Markdown files to target directories on the local system.

Alon Barad
Alon Barad
6 views•6 min read
•about 12 hours ago•GHSA-X975-RGX4-5FH4
8.2

GHSA-X975-RGX4-5FH4: Unescaped Locator Data Cross-Site Scripting in appium-mcp MCP-UI Resource

GHSA-X975-RGX4-5FH4 is a high-severity Cross-Site Scripting (XSS) vulnerability residing in the Model Context Protocol (MCP) User Interface (UI) component of appium-mcp, an NPM package integrating Appium with MCP clients. The flaw exists within the createLocatorGeneratorUI utility function, which renders UI metadata directly into an HTML template page without performing sanitization or encoding. Because MCP clients use window.parent.postMessage to send commands from the UI to the host, this XSS can be escalated to trigger arbitrary MCP tool calls, potentially leading to Remote Code Execution (RCE) on the host running the MCP client.

Alon Barad
Alon Barad
7 views•6 min read
•about 12 hours ago•GHSA-H3M5-97JQ-QJRF
9.6

GHSA-H3M5-97JQ-QJRF: Insecure Direct Object Reference (IDOR) Cross-Realm Bulk Alarm Deletion in OpenRemote Manager

An Insecure Direct Object Reference (IDOR) and missing authorization flaw in OpenRemote Manager allows an authenticated, low-privilege multi-tenant user to execute cross-realm bulk alarm deletion, resulting in permanent destruction of safety-critical alarms belonging to other tenants.

Amit Schendel
Amit Schendel
7 views•7 min read
•about 13 hours ago•GHSA-WVRH-2F4M-924V
5.5

GHSA-wvrh-2f4m-924v: Symlink-Following Arbitrary File Write in ChatterBot UbuntuCorpusTrainer

An insecure file extraction vulnerability exists in the UbuntuCorpusTrainer component of the ChatterBot package. Due to a combination of a predictable download path, a check-then-create directory pattern, and unvalidated symbolic link resolution during archive extraction, local attackers can write arbitrary files to restricted filesystem paths.

Amit Schendel
Amit Schendel
6 views•6 min read