Medium severity · published Mar 11, 2026
CVE-2026-31859
Craft has Reflective XSS via incomplete return URL sanitization
6.1
CVSS
0.2%
EPSS
No
On KEV
Description
Craft is a content management system (CMS). The fix for CVE-2025-35939 in craftcms/cms introduced a strip_tags() call in src/web/User.php to sanitize return URLs before they are stored in the session. However, strip_tags() only removes HTML tags (angle brackets) -- it does not inspect or filter URL schemes. Payloads like javascript:alert(document.cookie) contain no HTML tags and pass through strip_tags() completely unmodified, enabling reflected XSS when the return URL is rendered in an href attribute. This vulnerability is fixed in 5.9.7 and 4.17.3.
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
Attack vector
Network
Complexity
Low
Privileges
None
User interaction
Required
Confidentiality
Low
Integrity
Low
Availability
None
Scope
Changed
Exploitation
Is it being used?
Exploit prediction (EPSS)0.2% · higher than 8% of CVEs
Exploited in the wildNo evidence yet
CISA KEVNot listed
Ransomware campaign useNot known
Affected products
Which versions
CM
cms · craftcms
>= 4.15.3, < 4.17.3; >= 5.7.5, < 5.9.7 · source: vendor
CC
Craft Cms · Craftcms
4.15.3 before 4.17.3; 5.7.5 before 5.9.7 · source: NVD
Affected product
CM
cms
craftcms
More from cms
10.0
CVE-2025-32432
Craft CMS Allows Remote Code Execution
9.8
CVE-2024-56145
RCE when PHP `register_argc_argv` config setting is enabled in craftcms/cms
8.1
CVE-2025-23209
Potential RCE with a compromised security key in craft/cms
9.8
CVE-2026-112776
Craft CMS 5.0.0 before 5.11.0 GraphQL Site-Scope Bypass via Mutations
9.8
CVE-2026-84795
Craft CMS before 5.10.11 Authentication Bypass via Admin Flag Inheritance