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

CVE-2026-33161: Insecure Direct Object Reference in Craft CMS AssetsController

Alon Barad
Alon Barad
Software Engineer

Mar 24, 2026·5 min read·18 visits

Executive Summary (TL;DR)

Low-privileged authenticated attackers can exploit an IDOR in the Craft CMS image editor endpoint to extract sensitive asset metadata, including focal points, due to missing volume-level authorization checks.

Craft CMS versions 4.x before 4.17.8 and 5.x before 5.9.14 contain an Insecure Direct Object Reference (IDOR) vulnerability in the AssetsController. A failure to validate per-asset authorization allows low-privileged authenticated users to access internal metadata for private assets.

Vulnerability Overview

Craft CMS exposes the AssetsController::actionImageEditor endpoint to initialize the image editor UI and supply required metadata. The endpoint accepts a user-supplied assetId parameter to load the corresponding file from backend storage. In vulnerable versions, this endpoint processes the request without validating the user's authorization to access the specific asset volume.

An authenticated user with low privileges, such as a front-end user or restricted Control Panel user, can interact with this endpoint. By supplying arbitrary asset identifiers, the user bypasses intended access controls to retrieve data. This behavior constitutes an Insecure Direct Object Reference (IDOR) and an Information Disclosure vulnerability.

The vulnerability is tracked as CVE-2026-33161 and GHSA-vgjg-248p-rfm2. It impacts Craft CMS 4.x before version 4.17.8 and Craft CMS 5.x before version 5.9.14. The flaw allows unauthorized users to confirm the existence of private assets and extract restricted coordinate data.

Root Cause Analysis

The missing authorization validation occurs directly within the actionImageEditor method logic. When a request is received, the application attempts to load the requested asset model based entirely on the provided identifier. The code verifies that the asset exists but omits checks regarding the requesting user's permissions for the associated volume.

Specifically, the controller fails to verify if the user holds the viewAssets or editImages permissions for the specific storage location. This allows the application to proceed with extracting internal attributes from the asset model. The application then serializes this sensitive data, including focalPoint coordinates, into a JSON response.

This structural flaw violates the principle of least privilege by inherently trusting the user-supplied input for object access. The controller processes the request under the assumption that authentication equates to authorization for the requested object. The failure to enforce per-asset authorization boundaries creates the disclosure mechanism.

Code Analysis

The patch for CVE-2026-33161 introduces explicit permission enforcement within the actionImageEditor method. The maintainers added direct calls to requireVolumePermissionByAsset and requirePeerVolumePermissionByAsset. These methods validate the user's rights against the specific asset and its parent volume before processing proceeds.

@@ -849,6 +849,13 @@ public function actionImageEditor(): Response
             throw new BadRequestHttpException(Craft::t('app', 'The asset you’re trying to edit does not exist.'));
         }
 
+        $this->requireVolumePermissionByAsset('editImages', $asset);
+        $this->requirePeerVolumePermissionByAsset('editPeerImages', $asset);
+
+        if (!$asset->getSupportsImageEditor()) {
+            throw new BadRequestHttpException('Unsupported file format');
+        }
+
         $focal = $asset->getHasFocalPoint() ? $asset->getFocalPoint() : null;

The added requireVolumePermissionByAsset('editImages', $asset) call ensures the user has general image editing rights for the target volume. The requirePeerVolumePermissionByAsset('editPeerImages', $asset) call enforces strict boundaries on assets uploaded by other users.

Additionally, the getSupportsImageEditor() check prevents unauthorized metadata queries against non-image files, further reducing the attack surface. This comprehensive fix ensures that only users with explicit authorization can trigger the metadata extraction logic.

Exploitation Methodology

Exploitation requires the attacker to maintain an authenticated session within the Craft CMS environment. The user role does not require administrative privileges; a standard low-privileged account is sufficient. The attacker identifies the assets/image-editor endpoint as the target for the attack.

The attacker typically enumerates the assetId parameter, which relies on sequential integers. By iterating through asset IDs, the attacker sends automated POST or GET requests to the vulnerable endpoint. The server processes these requests without validating authorization for the specific IDs.

POST /index.php?p=admin/actions/assets/image-editor HTTP/1.1
Host: target-craft-site.com
Content-Type: application/x-www-form-urlencoded
Cookie: [Authenticated Session Cookie]
 
assetId=1234&siteId=1

The server responds with a JSON payload containing the private asset metadata. This includes the focalPoint object, exposing internal image-processing coordinates to the unauthorized user. The attacker logs these responses to map the application's internal file structure.

Impact Assessment

The vulnerability carries a CVSS v4.0 base score of 1.3, reflecting its low severity and limited scope of impact. The primary consequence is the unauthorized disclosure of asset metadata, specifically focal point coordinates. An attacker cannot use this flaw to modify the asset, delete the asset, or execute arbitrary code.

However, the vulnerability enables an attacker to map the internal asset structure by confirming the existence of specific asset IDs. This information gathering supports reconnaissance efforts against the target application. Enumerating valid asset IDs reveals the volume of unpublished or private media stored on the server.

The extraction of focal point data exposes internal editorial decisions. While this data is generally low-value, it confirms a systemic failure in access control implementation. The lack of granular authorization validation creates a reliable oracle for querying the existence of restricted files.

Remediation and Mitigation

The vulnerability is fully resolved in Craft CMS versions 4.17.8 and 5.9.14. Administrators must apply these updates to enforce strict volume-level and peer-level permission checks. Updating the application is the only definitive method to remediate the underlying authorization failure.

In environments where immediate patching is not feasible, administrators should audit user group permissions. Ensure that "Access Control Panel" and "Asset Volume" permissions are strictly restricted to trusted administrative personnel. Revoking unnecessary privileges minimizes the pool of authenticated users capable of exploiting the endpoint.

Security teams monitor access logs for anomalous behavior targeting the /index.php?p=admin/actions/assets/image-editor endpoint. High volumes of requests from a single authenticated user, especially those iterating sequentially through the assetId parameter, indicate active exploitation attempts. Implementing rate limiting on this endpoint disrupts automated enumeration tools.

Official Patches

Craft CMSCraft CMS 4.17.8 Release Notes
Craft CMSCraft CMS 5.9.14 Release Notes

Fix Analysis (1)

Technical Appendix

CVSS Score
1.3/ 10
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/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
cms
craftcms
4.0.0-RC1 to < 4.17.84.17.8
cms
craftcms
5.0.0-RC1 to < 5.9.145.9.14
AttributeDetail
CWE IDCWE-862, CWE-200
Attack VectorNetwork
AuthenticationRequired (Low Privilege)
CVSS v4.0 Score1.3
ImpactInformation Disclosure
Exploit StatusUnexploited / No Public PoC
CISA KEVNot Listed

MITRE ATT&CK Mapping

T1005Data from Local System
Collection
T1552Unsecured Credentials
Credential Access
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

Official fix released in Craft CMS 4.17.8 and 5.9.14
2026-02-25
CVE-2026-33161 published to NVD and CVE.org
2026-03-24

References & Sources

  • [1]GitHub Security Advisory: GHSA-vgjg-248p-rfm2
  • [2]NVD Entry for CVE-2026-33161

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 minute 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
0 views•6 min read
•about 1 hour 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
2 views•7 min read
•about 2 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
2 views•7 min read
•about 3 hours ago•GHSA-3X6R-WXXG-53VV
5.3

GHSA-3x6r-wxxg-53vv: Process-Fatal Nil Pointer Dereference in rclone WebDAV TUS Upload Backend

A critical process-fatal NULL pointer dereference vulnerability exists in the WebDAV backend of rclone (when configured with ownCloud Infinite Scale TUS uploads). During transport failures, a nil HTTP response pointer is dereferenced directly without validation, leading to an unhandled Go runtime panic that terminates the entire rclone daemon. This vulnerability was resolved in rclone version 1.75.0.

Amit Schendel
Amit Schendel
2 views•11 min read
•about 4 hours ago•GHSA-8V25-V8P6-QF7V
8.6

GHSA-8V25-V8P6-QF7V: Path Traversal in rclone S3 API Gateway Emulation

A path traversal vulnerability exists in the S3 emulation layer of rclone when executing the 'serve s3' subcommand. Because the application maps client-supplied S3 object keys containing relative directory sequences to file paths without proper boundary checks, an attacker can escape the logical containment of a target bucket. This enables unauthorized reading, writing, and deletion of files at the root level of the served storage directory.

Alon Barad
Alon Barad
3 views•5 min read
•about 5 hours ago•GHSA-8MXV-9XHP-86H4
5.3

GHSA-8MXV-9XHP-86H4: Information Disclosure and Credential Leakage during S3 HTTP Redirects in rclone

A critical security flaw was identified in rclone before version 1.75.0, where the custom S3 redirect handler failed to sanitize sensitive authentication headers and encryption keys during cross-host redirects or transport downgrades. This flaw allows attackers on the path or controlling target hosts to intercept sensitive IBM IAM tokens, AWS S3 Express tokens, and customer-provided server-side encryption keys (SSE-C).

Amit Schendel
Amit Schendel
3 views•7 min read