starcitizentools/mediawiki-skins-citizen · Security

Citizen vulnerable to Stored XSS through short descriptions

GHSA ID
GHSA-prmv-7r8c-794g
CVE ID
CVE-2025-53370
Severity
high
Published
Updated
CVSS
8.6 · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:L
CVSS v3
8.6 · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:L

Description

Summary

Short descriptions set via the ShortDescription extension are inserted as raw HTML by the Citizen skin, allowing any user to insert arbitrary HTML into the DOM by editing a page.

Details

The shortdesc property, which contains unsanitized user input, is retrieved from the OutputPage and returned as the tagline: https://github.com/StarCitizenTools/mediawiki-skins-Citizen/blob/0d8a44011e02a081618359a1e90f462478e807aa/includes/Components/CitizenComponentPageHeading.php#L249-L251 The tagline is then provided to the template data: https://github.com/StarCitizenTools/mediawiki-skins-Citizen/blob/0d8a44011e02a081618359a1e90f462478e807aa/includes/Components/CitizenComponentPageHeading.php#L270-L275 The template then inserts the tagline into raw HTML without doing any escaping: https://github.com/StarCitizenTools/mediawiki-skins-Citizen/blob/0d8a44011e02a081618359a1e90f462478e807aa/templates/PageHeading.mustache#L12

PoC

  1. Enable Citizen and ShortDescription
  2. Add {{SHORTDESC:<img src="" onerror="alert('citizen shortdescription xss')">}} to a page
  3. Visit the page image image

Impact

Arbitrary HTML can be inserted into the DOM by any user, allowing for JavaScript to be executed.

CWEs

References