ZeroHour

CVE-2026-81898

large

Stored XSS via Address Attribute in Concrete CMS Below 9.5.3

CVSS 4.0
7.5 high
EPSS
Published
()
Modified
AI analysis

Concrete CMS versions below 9.5.3 fail to HTML-escape the Address attribute's country-less text formatter, allowing stored cross-site scripting in Express association views. A low-privileged user who can submit a form containing an Address attribute (which, when not required, accepts a blank country) can inject script that executes in the session of any dashboard user who opens the affected entry, because templates such as concrete/elements/express/form/view/dashboard/association.php echo the association label mask without applying h(). Successful exploitation lets the attacker perform actions with the dashboard user's privileges, potentially full site administration. The Concrete CMS security team rated it CVSS v4.0 7.5 (high), and exploitation requires user interaction plus an attacker with submission rights. No public proof of concept or observed in-the-wild exploitation is known at this time.

What to do: Upgrade Concrete CMS to version 9.5.3 or later, where the formatter escapes output. Until patched, restrict which users can submit forms containing Address attributes and review existing Express entries with Address attributes for injected script. Check dashboard access logs for suspicious activity by low-privilege submitters and invalidate sessions for admins who viewed suspect entries.

Affected
Concrete CMS< 9.5.3
Estimated exposure
largetens of thousands of sites (roughly 50,000 live Concrete CMS deployments, many running pre-9.5.3 versions) — Public web-technology surveys (e.g., BuiltWith/PublicWWW-style scans) typically count Concrete CMS in the range of tens of thousands of live sites, and only a subset are patched to 9.5.3+; this is clearly an estimate.

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

Description

In Concrete CMS below version 9.5.3, the Address attribute's country-less text formatter skipped HTML-escaping, enabling stored XSS in Express association views. A user able to submit an Address attribute could execute script in the session of any dashboard user who opened the affected entry. The unescaped branch was reachable because a non-required Address attribute accepted a blank country, and because several Express association templates (for example concrete/elements/express/form/view/dashboard/association.php) echoed the association label mask without applying h(). The Concrete CMS security team gave this vulnerability a CVSS v4.0 score of 7.5 with vector CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N. Thanks Yonatan Drori from Tenzai for reporting.

Weakness
CWE-79
Vector
CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:P/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.