Multiple stored XSS vulnerabilities were found in Craft CMS. They were split into 4 reports as follows:
| Report | What's Vulnerable | Why Separate |
|---|---|---|
| This Report (1) | Multiple settings names | Twig Template: _includes/forms/checkbox.twig |
| Report 2 | Entry Types Name | Twig Template: _includes/forms/editableTable.twig |
| Report 3 | Card Attributes in Field Layout | helpers/Cp.php |
| Report 4 (Commerce) | Product Type Name | Source in Commerce, sink in CMS - will report this one via Commerce GHSA |
Reports 2, 3, and 4 are clearly distinct locations. For this report (Report 1), it was not clear whether to split or consolidate these 7 bugs. The bug report was consolidated and the final categorization should be left to the judgement of the user.
Note: This overview is only in this Report. Other reports only reference this one.
Stored XSS in multiple settings. Names/labels are rendered without sanitization via checkbox.twig template which uses {{ label|raw }}.
| # | Source (injection point) | Sink (where payload reflects) |
|---|---|---|
| 1 | Section Name (/admin/settings/sections) |
Entries field -> Sources checklist |
| 2 | Volume Name (/admin/settings/assets/volumes/{vol_id}) |
Assets field -> Sources checklist |
| 3 | User Group Name (/admin/settings/users/groups) |
Users field -> Sources, User permissions page |
| 4 | Global Set Name (/admin/settings/globals) |
User permissions page |
| 5 | Generated Fields Name (Volumes, Users, etc.) | Card Attributes checkboxes |
| 6 | Checkboxes & Radio Buttons Field Option Label (/admin/settings/fields) |
User profile pages |
| 7 | Custom Sources Label (/admin/users -> Customize Sources) |
Users field -> Sources checklist |
allowAdminChanges is enabled in production, which is against our security recommendations.<img src=x onerror="alert('XSS')">
Note: User Group Name also reflects on User permissions page under User Groups section (/admin/users/{id}/permissions).
/admin/settings/globals)./admin/users/{id}/permissions).<img src=x onerror="alert('XSS')">
/admin/settings/fields)./admin/settings/users/fields)./admin/users/{id})./admin/users).https://github.com/craftcms/cms/commit/943152d2246b36f12adf161a03b8695b773d9276
https://github.com/craftcms/cms/commit/67780a778c6ec04e68e64a0b1177c168306144a2
| Base score | Version | Severity | Vector |
|---|---|---|---|
| 2.1 | 4.0 | — |
|
| Type | Value |
|---|---|
| GHSA | GHSA-4mgv-366x-qxvx ↗ |
| CWE id | Name |
|---|---|
| CWE-79 | Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting') |
Vulnerable version ranges and first patched releases as published by GitHub.
| Ecosystem | Package | Vulnerable range | First patched | Vulnerable functions |
|---|---|---|---|---|
| composer | craftcms/cms | >= 5.0.0-RC1, < 5.9.0-beta.1 | 5.9.0-beta.1 | — |
| composer | craftcms/cms | >= 4.0.0-RC1, < 4.17.0-beta.1 | 4.17.0-beta.1 | — |