GHSA-xxpx-f366-4xpq: Craft CMS: Authorization bypass: view-only Categories user can modify category structure via structures/move-element
(updated )
A control-panel user who holds only the viewCategories permission for a category group (and not saveCategories) can permanently modify that group’s category structure — reordering and re-parenting categories via the structures/move-element action.
A read-time authorization grant that a write endpoint later trusts. For categories, the structureEditable flag is computed from the view permission (src/elements/Category.php:205) instead of the save permission (entries correctly use saveEntries — src/elements/Entry.php:341). When the read-only category index renders, craft\base\Element::indexHtml() calls Craft::$app->getSession()->authorize('editStructure:<structureId>'); StructuresController then authorizes the structure-mutating action solely on that session grant, with no canSave re-check.
Verified on Craft CMS 5.10.5. Same class as the moderate-severity authorization bypasses fixed in 5.10.3 and 5.10.5; this is a distinct, unpatched instance.
References
- github.com/advisories/GHSA-xxpx-f366-4xpq
- github.com/craftcms/cms/commit/eb63721b8476ef53f21d7de53d156eef531cb57d
- github.com/craftcms/cms/releases/tag/4.18.2
- github.com/craftcms/cms/releases/tag/5.10.6
- github.com/craftcms/cms/security/advisories/GHSA-xxpx-f366-4xpq
- nvd.nist.gov/vuln/detail/CVE-2026-72785
- www.vulncheck.com/advisories/craft-cms-before-authorization-bypass-via-structures-move-element
Code Behaviors & Features
Detect and mitigate GHSA-xxpx-f366-4xpq with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Learn more about Dependency Scanning →