GHSA-6j87-m5qx-9fqp
Craft CMS has Stored XSS in Table Field in its "Row Heading" Column Type
Packages
| Ecosystem | Package | Affected | Fixed in |
|---|---|---|---|
| Packagist | craftcms/cms | >= 4.5.0-beta.1, < 4.16.19 | 4.16.19 |
| Packagist | craftcms/cms | >= 5.0.0-RC1, < 5.8.23 | 5.8.23 |
Details
As written in the advisory (Markdown source, shown as plain text).
A stored Cross-site Scripting (XSS) vulnerability exists in the `editableTable.twig` component when using the `Row Heading` column type. The application fails to sanitize input within row headings, allowing an attacker to execute arbitrary JavaScript when another user views a page with the malicious table field.
## Prerequisites
* An administrator account
* `allowAdminChanges` must be enabled in production, which is [against security recommendations](https://craftcms.com/knowledge-base/securing-craft#set-allowAdminChanges-to-false-in-production).
## Steps to Reproduce
1. Navigate to **Settings** → **Fields** and create a new field with Type: **Table**
1. Add a **Column Heading** and set **Column Type** to `Row Heading`
1. In **Default Values** section, add a row with the following payload:
```html
<img src=x onerror="alert('XSS')">
```
1. Enable `Static Rows`
1. Use the field in any object (e.g., user profile fields) → then visit any user’s profile
1. Notice the XSS execution
## Resources
https://github.com/craftcms/cms/commit/7b372de262b8d9d2ce859f32780c3715719b6f5a
References
External links from the advisory. They lead to third-party sites.
- https://github.com/craftcms/cms/security/advisories/GHSA-6j87-m5qx-9fqp
- https://nvd.nist.gov/vuln/detail/CVE-2026-56383
- https://github.com/craftcms/cms/commit/7b372de262b8d9d2ce859f32780c3715719b6f5a
- https://craftcms.com/knowledge-base/securing-craft#set-allowAdminChanges-to-false-in-production
- https://github.com/craftcms/cms
- https://github.com/craftcms/cms/releases/tag/4.16.19
- https://github.com/craftcms/cms/releases/tag/5.8.23
- https://www.vulncheck.com/advisories/craft-cms-stored-xss-in-table-field-via-row-heading-column-type