ZeroHour

CVE-2026-85386

moderate

Stored XSS via Unsanitized XML/XSLT Uploads in Concrete CMS Before 9.5.4

CVSS 4.0
7.3 high
EPSS
Published
()
Modified
AI analysis

Concrete CMS before 9.5.4 failed to sanitize XML and XSLT files submitted through a public Form Block file-upload question, validating uploads by file extension only and storing them as publicly accessible files served inline from the site's own origin. An unauthenticated visitor could upload an XML document containing an xml-stylesheet processing instruction that referenced an attacker-supplied, same-origin XSLT stylesheet; when a victim opened the stored XML directly, the browser applied the stylesheet and executed attacker-controlled JavaScript in the Concrete CMS origin, resulting in stored cross-site scripting. If the victim was an authenticated administrator, the script could act with that administrator's session, and the reporter demonstrated creation of a new user in the Administrators group. Any Concrete CMS deployment running a version before 9.5.4 that exposes a public form with a file-upload question is affected. No public proof-of-concept or in-the-wild exploitation is currently known, and the issue is not listed in CISA KEV.

What to do: Upgrade to Concrete CMS 9.5.4 or later. As interim mitigation, remove or restrict file-upload questions in public Form Blocks so XML/XSLT files cannot be uploaded, or serve uploads with attachment disposition and nosniff headers. Review the file manager for unexpected .xml/.xslt uploads and audit the Administrators group for unauthorized users.

Affected
Concrete CMSAll versions before 9.5.4
Estimated exposure
moderatetens of thousands of sites (est.) — Concrete CMS is a niche open-source CMS whose community-estimated active deployments are on the order of 10k-100k sites, and only those sites with a publicly reachable Form Block configured with a file-upload question are actually…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

Concrete CMS before 9.5.4 did not sanitize XML and XSLT documents uploaded through a public Form Block file-upload question. Plain XML uploads were validated by file extension only and stored as publicly accessible files that were served inline from the application's own origin. An unauthenticated visitor could therefore store an XML document containing an xml-stylesheet processing instruction that referenced an attacker-supplied, same-origin XSLT stylesheet. When a victim opened the stored file directly in a browser, the browser fetched the stylesheet, transformed the document into HTML, and executed attacker-controlled JavaScript in the Concrete CMS origin (stored cross-site scripting). If the victim was an authenticated administrator, the script could act with that administrator's session, and the reporter demonstrated creation of a new user in the Administrators group. The Concrete CMS security team gave this vulnerability a CVSS v4.0 score of 7.3 with vector CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N. Thanks Valentin SARRE (Independent security researcher) for reporting.

Weakness
CWE-79
Vector
CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X

In the news

No ingested article mentions this CVE yet.