Miggo Logo

CVE-2025-53368: starcitizentools/citizen-skin is vulnerable to Stored XSS attack in the legacy search bar through page descriptions

8.6

CVSS Score
3.1

Basic Information

EPSS Score
0.12976%
Published
7/3/2025
Updated
7/3/2025
KEV Status
No
Technology
TechnologyPHP

Technical Details

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:L
Package NameEcosystemVulnerable VersionsFirst Patched Version
starcitizentools/citizen-skincomposer>= 1.9.4, < 3.4.03.4.0

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The security vulnerability is a stored Cross-Site Scripting (XSS) attack in the legacy search functionality of the starcitizentools/citizen-skin MediaWiki skin. The core of the issue lies in the fact that page descriptions, which can be created or edited by users, were being rendered directly into the search results without any sanitization.

The provided patch, commit aedbceb3380bb48db6b59e272fc187529c71c8ca, clearly illustrates the vulnerability. The change is in the resources/skins.citizen.search/templates/TypeaheadListItem.mustache file, which is a Mustache template for displaying search result items. The patch replaces {{{.}}} with {{.}} for the description field.

In Mustache templating, the triple curly braces {{{.}}} are used to output a variable without any HTML escaping, meaning any HTML or script tags within the variable's content will be rendered as-is by the browser. This is the direct cause of the XSS vulnerability. The fix, using double curly braces {{.}}, ensures that the content of the description variable is HTML-escaped, converting characters like < and > into their respective HTML entities (&lt; and &gt;), thus preventing the browser from interpreting them as code.

While a runtime profiler would show a generic Mustache rendering function executing, the vulnerability itself is defined by the logic within the TypeaheadListItem.mustache template. Therefore, this template is identified as the key vulnerable component.

Vulnerable functions

Only Mi**o us*rs **n s** t*is s**tion

WAF Protection Rules

WAF Rule

### Summ*ry P*** **s*riptions *r* ins*rt** into r*w *TML wit*out prop*r s*nitiz*tion *y t** *itiz*n skin w**n usin* t** ol* s**r** **r. ### **t*ils T** **s*riptions, w*i** *r* uns*nitiz**, *r* ins*rt** *s r*w *TML: *ttps://*it*u*.*om/St*r*itiz*nToo

Reasoning

T** s**urity vuln*r**ility is * stor** *ross-Sit* S*riptin* (XSS) *tt**k in t** l****y s**r** *un*tion*lity o* t** `st*r*itiz*ntools/*itiz*n-skin` M**i*Wiki skin. T** *or* o* t** issu* li*s in t** ***t t**t p*** **s*riptions, w*i** **n ** *r**t** or