Skip to content

Commit f60341a

Browse files
1 parent 5fdf699 commit f60341a

1 file changed

Lines changed: 67 additions & 0 deletions

File tree

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
{
2+
"schema_version": "1.4.0",
3+
"id": "GHSA-xxpx-f366-4xpq",
4+
"modified": "2026-08-06T21:43:54Z",
5+
"published": "2026-08-06T21:43:54Z",
6+
"aliases": [],
7+
"summary": "Craft CMS:Authorization bypass: view-only Categories user can modify category structure via structures/move-element",
8+
"details": "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.\n\nA 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.\n\nVerified 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.\n\n## Impact\n\nA low-privileged, authenticated user (view-only on a category group) can persistently alter the sibling ordering and parent/child nesting of the category taxonomy. Because a category’s URI is derived from its position in the structure (ancestor slugs), moving a category changes its URL and the URLs of its descendants, and can corrupt any navigation/menus built from the category tree. This is an integrity/broken access-control issue: content that the user has no permission to modify is being modified. No confidentiality impact and no RCE; scope is content/taxonomy integrity.",
9+
"severity": [
10+
{
11+
"type": "CVSS_V3",
12+
"score": "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"
13+
}
14+
],
15+
"affected": [
16+
{
17+
"package": {
18+
"ecosystem": "Packagist",
19+
"name": "craftcms/cms"
20+
},
21+
"ranges": [
22+
{
23+
"type": "ECOSYSTEM",
24+
"events": [
25+
{
26+
"introduced": "5.0.0-RC1"
27+
},
28+
{
29+
"fixed": "5.10.6"
30+
}
31+
]
32+
}
33+
]
34+
}
35+
],
36+
"references": [
37+
{
38+
"type": "WEB",
39+
"url": "https://github.com/craftcms/cms/security/advisories/GHSA-xxpx-f366-4xpq"
40+
},
41+
{
42+
"type": "WEB",
43+
"url": "https://github.com/craftcms/cms/commit/eb63721b8476ef53f21d7de53d156eef531cb57d"
44+
},
45+
{
46+
"type": "PACKAGE",
47+
"url": "https://github.com/craftcms/cms"
48+
},
49+
{
50+
"type": "WEB",
51+
"url": "https://github.com/craftcms/cms/releases/tag/4.18.2"
52+
},
53+
{
54+
"type": "WEB",
55+
"url": "https://github.com/craftcms/cms/releases/tag/5.10.6"
56+
}
57+
],
58+
"database_specific": {
59+
"cwe_ids": [
60+
"CWE-863"
61+
],
62+
"severity": "MODERATE",
63+
"github_reviewed": true,
64+
"github_reviewed_at": "2026-08-06T21:43:54Z",
65+
"nvd_published_at": null
66+
}
67+
}

0 commit comments

Comments
 (0)