Craft CMS: Authorized asset "preview file" requests bypass allows users without asset access to retrieve private preview metadata
Published 26 Mar 2026 · Updated 6 Aug 2026
Affected packages
- Affected
- >=5.0.0-RC1 <5.9.14
- Fixed in
- 5.9.14
composer require craftcms/cms:^5.9.14- Affected
- >=4.0.0-RC1 <4.17.8
- Fixed in
- 4.17.8
composer require craftcms/cms:^4.17.8Details
Summary
An authenticated low-privileged user can call assets/preview-file for an asset they are not authorized to view and still receive preview response data (previewHtml) for that private asset.
The returned preview HTML included a private preview image route containing the target private assetId, even though canView was false for the attacker account.
Details
1. assets/preview-file accepts a maliciously controlled assetId and renders preview output.
2. The action does not enforce per-asset view authorization prior to returning preview content.
3. As a result, an authenticated user without asset-view permission can still obtain private preview output.
This affects Craft installations with authenticated users of mixed privilege levels with private assets.
Resources
- d30df3112220db1ffd6726a3ed11857014c7fb27
- b1cddf72c98a
Is GHSA-44px-qjjc-xrhq in any of your client repos?
Checking one package by hand is fine. Checking it across forty client projects is not. NPMscan reads the lockfiles in every GitHub repo you pick, finds each project with an affected craftcms/cms, and gives you the command that fixes it.
References
- Linkgithub.com/craftcms/cms/security/advisories/GHSA-44px-qjjc-xrhq
- Advisorynvd.nist.gov/vuln/detail/CVE-2026-56385
- Linkgithub.com/craftcms/cms/commit/b1cddf72c98a66801beb04ea4b07e72182b7b7db
- Linkgithub.com/craftcms/cms/commit/d30df3112220db1ffd6726a3ed11857014c7fb27
- Packagegithub.com/craftcms/cms
- Linkwww.vulncheck.com/advisories/craft-cms-authorization-bypass-in-assets-preview-file-endpoint
Advisory data from OSV.dev (opens OSV.dev in a new tab), refreshed daily.