CVE-2026-55793
# Stored XSS via Structure entry title in table view ## Summary An Author-level control panel user can store a JavaScript payload in an entry title. When an admin, or any control panel user with `saveEntries` for the same Structure section, drags another entry under the poisoned entry in table view, the payload executes in the victim’s session. The issue is exploitable because the title is escaped into `data-title` by the server, decoded again by the browser, read with jQuery `.data('title')`, and then concatenated into a new HTML string without attribute escaping. Execution was verified with `alert(document.domain)`. Impact was verified against an elevated admin session by changing the admin user’s email through `users/save-user`, then using the password-reset flow to take over the account. ## Preconditions - Attacker has `createEntries` + `saveEntries` on a Structure-type section (Author-style CP account; no admin permission required). - Victim has `saveEntries` on the same section. Craft only renders drag handles when `structureEditable` is true, which requires this permission, so any admin qualifies. - Section must be type Structure. Channel and Single sections are unaffected. - Poisoned entry must have no children at the time of the drag (fires on the 0-to-1 descendant transition). - For the email-change account-takeover path, the victim must currently have an elevated session. The stored XSS itself does not require elevation. ## Root cause `ElementTableSorter.js` lines 643-652: ```js const ancestorTitle = this._updateAncestors._$ancestor.data('title'); $( '<button … aria-label="' + Craft.t('app', 'Show {title} children', {title: ancestorTitle}) + '"></button>' ).insertAfter(…); ``` `Craft.t` with a `{title}` token calls `_parseToken`, reaches `case 'none': return arg` (`Craft.js:193-194`), and returns the title verbatim. The result is handed to jQuery's `$()` and parsed as HTML. The server-side template correctly encodes the entry title into
Properties
- ghsa_id
- GHSA-xrqc-p465-2xvg
- severity
- medium
- summary
- Craft CMS: Stored XSS via Structure entry title in table view
- epss_score
- 0.00257
- cve_id
- CVE-2026-55793
- is_ghsa_only
- false
- ghsa_published
- 2026-07-06T21:35:02Z
- source_url
- https://github.com/advisories/GHSA-xrqc-p465-2xvg
- epss_percentile
- 0.17592
- ghsa_updated
- 2026-07-06T21:35:04Z
Related Entities (5)
ENRICHED_BY (1)
VULNERABLE_TO (1)
AFFECTS (1)
HAS_WEAKNESS (1)
REPORTED_BY (1)
Explore deeper with Ninja Signal's threat intelligence graph