CVE-2026-31859
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.
How to fix
- craftcms craft_cms4.17.3, 5.9.7 or later
- craftcms/cms4.17.3, 5.9.7 or later
Affected products
| Product | Affected versions | Fixed in |
|---|---|---|
| craftcms craft_cms | 4.15.3 ≤ v < 4.17.3, 5.7.5 ≤ v < 5.9.7 | 4.17.3, 5.9.7 |
| craftcms/cmsPackagist | 4.15.3 ≤ v < 4.17.3, 5.7.5 ≤ v < 5.9.7 | 4.17.3, 5.9.7 |
Check your version
Choose the product and enter the version you run to see whether it falls in the affected range.
Attack Surface Management
See the assets tied to your domains, the technologies they run and known vulnerabilities in one list.