CVE-2026-85386: Concrete CMS before 9.5.4 stored is vulneratble to cross-site scripting via unauthenticated XML/XSLT file upload in the Form Block
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.
Affected Software
Event History
Frequently Asked Questions
Which deployments are exposed to exploitation?
Deployments with a public Form Block file-upload question that permits XML or XSLT uploads are exposed. The uploaded files must be publicly accessible and served inline from the Concrete CMS origin for the described browser-based attack to work.
What does an attacker need to do to trigger the issue?
An unauthenticated visitor can upload a crafted XML file containing an xml-stylesheet processing instruction that points to an attacker-supplied same-origin XSLT stylesheet. A victim must then open the stored XML file directly in a browser.
What is the impact if an administrator opens a malicious uploaded file?
The attacker-controlled JavaScript executes in the Concrete CMS origin using the victim's browser session. The reported demonstration created a new user in the Administrators group when the victim was an authenticated administrator.