Description
Craft CMS is a content management system (CMS). In versions 5.0.0-RC1 through 5.9.22, an author-level control panel user can store a malicious 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. To exploit, an attacker must have an existing control panel account (Author role minimum), the victim must perform a drag operation (not just visit the page), and the victim’s session needs to be elevated at trigger time. This issue has been fixed in version 5.9.23.
Published: 2026-07-01
Score: 5.9 Medium
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

Craft CMS is a content‑management system that, in versions 5.0.0‑RC1 through 5.9.22, allows an author‑level control‑panel user to store a malicious JavaScript payload in an entry title. When an administrator or another control‑panel user with the saveEntries permission drags a different entry under the poisoned entry in the table view, the payload executes in the victim’s browser session. The flaw stems from the title being escaped only into a data‑title attribute, decoded again by the browser, read with jQuery .data('title'), and concatenated into new HTML without attribute escaping, providing a stored XSS vector.

Affected Systems

All installations running Craft CMS versions 5.0.0‑RC1 through 5.9.22 are affected until the issue is addressed in newer versions.

Risk and Exploitability

The CVSS score of 5.9 indicates moderate severity, the EPSS score is less than 1% demonstrating a very low probability of exploitation, and the vulnerability is not listed in CISA’s KEV catalog. Exploitation requires an existing author‑level control‑panel account, the victim to perform a drag operation in the table view, and the victim’s session to be elevated at the time of trigger. Based on the description, it is inferred that the attack vector is the control‑panel UI, meaning both attacker and victim must interact with the drag‑and‑drop feature, thereby limiting practical risk to environments where such accounts and UI actions coexist.

Generated by OpenCVE AI on July 21, 2026 at 13:12 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Craft CMS to version 5.9.23 or later to apply the fixed logic that sanitizes titles before rendering.
  • If an immediate upgrade is not possible, edit the control‑panel templates to remove or escape the data‑title attribute used in the table view, ensuring that any title inserted is properly escaped before concatenation.
  • Restrict author accounts from having the saveEntries permission on the affected structure section, or disable drag‑and‑drop functionality in the control panel so that entry titles are not re‑rendered during movement.

Generated by OpenCVE AI on July 21, 2026 at 13:12 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-xrqc-p465-2xvg Craft CMS: Stored XSS via Structure entry title in table view
History

Thu, 02 Jul 2026 16:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Wed, 01 Jul 2026 22:15:00 +0000

Type Values Removed Values Added
Description Craft CMS is a content management system (CMS). In versions 5.0.0-RC1 through 5.9.22, an author-level control panel user can store a malicious 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. To exploit, an attacker must have an existing control panel account (Author role minimum), the victim must perform a drag operation (not just visit the page), and the victim’s session needs to be elevated at trigger time. This issue has been fixed in version 5.9.23.
Title Craft CMS: Stored XSS via Structure entry title in table view
Weaknesses CWE-79
References
Metrics cvssV4_0

{'score': 5.9, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:P/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N'}


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-07-02T15:54:31.536Z

Reserved: 2026-06-17T14:40:28.380Z

Link: CVE-2026-55793

cve-icon Vulnrichment

Updated: 2026-07-02T15:09:46.377Z

cve-icon NVD

No data.

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-07-21T13:15:05Z

Weaknesses
  • CWE-79

    Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')