Skip to content

← Public intelligence

Packagist package

starcitizentools/citizen-skin

Open actionable advisories and recorded vendor fixes. This public package view has no inventory attached and cannot establish whether your deployment is affected. A vendor fix never resolves your finding; verify your installed version and the source guidance.

Open advisories

9 actionable advisories, newest first. Withdrawn advisories and news are excluded. Coverage is partial.

  1. Medium, CVSS 6.5PackagistPublished

    Citizen vulnerable to stored XSS in sticky header button messages

    CVE-2025-62508 · GHSA-g955-vw6w-v6pp

    Affected
    • Packagist starcitizentools/citizen-skin >= 3.3.0, < 3.9.0
    Fixed in
    3.9.0· Vendor fix available
    Issue
    The JS implementation for copying button labels to the sticky header in the Citizen skin unescapes HTML characters, allowing for stored XSS through system messages. Details In the copyButtonAttributes function in stickyHeader.js, when copying the button labels, the innerHTML of the new element is set to the textContent of the old element: https://github.com/StarCitizenTools/mediawiki-skins-Citizen/blob/f4cbcecf5aca0ae69966b23d4983f9cb5033f319/resources/skins.citizen.scripts/stickyHeader.js#L29-L41 This unescapes any escaped HTML characters and causes the contents of the system messages to be interpreted as HTML. PoC 1. Edit any of the affected messages (citizen-share, citizen-view-history, citizen-view-edit, nstab-talk) to the following payload: <img src="" onerror="alert('Sticky Header Button XSS')". 2. Visit any mainpage article in the wiki using the Citizen skin. <img width="495" height="228" alt="image"…

    Recommended action: Upgrade to 3.9.0 or later, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.

    Sources:github.comSource checked Evidence →
  2. High, CVSS 8.6PackagistPublished

    Citizen vulnerable to Stored XSS through short descriptions

    CVE-2025-53370 · GHSA-prmv-7r8c-794g

    Affected
    • Packagist starcitizentools/citizen-skin >= 1.9.4, < 3.4.0
    Fixed in
    3.4.0· Vendor fix available
    Issue
    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:&lt;img…

    Recommended action: Upgrade to 3.4.0 or later, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.

    Sources:github.comSource checked Evidence →
  3. High, CVSS 8.6PackagistPublished

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

    CVE-2025-53368 · GHSA-rq6g-6g94-jfr4

    Affected
    • Packagist starcitizentools/citizen-skin >= 1.9.4, < 3.4.0
    Fixed in
    3.4.0· Vendor fix available
    Issue
    Page descriptions are inserted into raw HTML without proper sanitization by the Citizen skin when using the old search bar. Details The descriptions, which are unsanitized, are inserted as raw HTML: https://github.com/StarCitizenTools/mediawiki-skins-Citizen/blob/d4dfc3697a82948b3b9c4d44e9a273c79bc86b87/resources/skins.citizen.search/templates/TypeaheadListItem.mustache#L18 PoC All of the reproduction methods require the command palette to be disabled via $wgCitizenEnableCommandPalette = false;. Additionally, the action API must be used as the Search Gateway via $wgCitizenSearchGateway = 'mwActionApi';. TextExtracts as the description source Enable the TextExtracts extension Add $wgCitizenSearchDescriptionSource = 'textextracts'; to your LocalSettings.php Create a page called CitizenXSSTextExtracts and insert <img src="" onerror="alert('citizen search xss')" into it Open the search modal and search for CitizenXSSTextExtracts Description2 as the description source Enable the…

    Recommended action: Upgrade to 3.4.0 or later, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.

    Sources:github.comSource checked Evidence →
  4. Medium, CVSS 6.5PackagistPublished

    starcitizentools/citizen-skin allows stored XSS in user registration date message

    CVE-2025-49578 · GHSA-2v3v-3whp-953h

    Affected
    • Packagist starcitizentools/citizen-skin >= 3.3.0, < 3.3.1
    Fixed in
    3.3.1· Vendor fix available
    Issue
    Various date messages returned by Language::userDate are inserted into raw HTML, allowing anybody who can edit those messages to insert arbitrary HTML into the DOM. Details The result of $this-lang-userDate( $timestamp, $this-user ) returns unescaped values, but is inserted as raw HTML by Citizen: https://github.com/StarCitizenTools/mediawiki-skins-Citizen/blob/072e4365e9084e4b153eac62d3666566c06f5a49/includes/Components/CitizenComponentUserInfo.php#L55-L60 PoC 1. Go to any page using citizen with the uselang parameter set to x-xss and while being logged in Depending on the registration date of the account you're logged in with, various messages can be shown. In my case, it's november: Impact This impacts wikis where a group has the editinterface but not the editsitejs user right.

    Recommended action: Upgrade to 3.3.1 or later, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.

    Sources:github.comSource checked Evidence →
  5. Medium, CVSS 6.5PackagistPublished

    starcitizentools/citizen-skin allows stored XSS in menu heading message

    CVE-2025-49579 · GHSA-g3cp-pq72-hjpv

    Affected
    • Packagist starcitizentools/citizen-skin >= 2.4.2, < 3.3.1
    Fixed in
    3.3.1· Vendor fix available
    Issue
    All system messages in menu headings using the Menu.mustache template are inserted as raw HTML, allowing anybody who can edit those messages to insert arbitrary HTML into the DOM. Details The system messages for menu headings are inserted unescaped into raw HTML: https://github.com/StarCitizenTools/mediawiki-skins-Citizen/blob/072e4365e9084e4b153eac62d3666566c06f5a49/templates/Menu.mustache#L8-L10 PoC 1. Go to any article using citizen with the uselang parameter set to x-xss 2. A large number of alerts will be shown for various messages, e.g.: On the main page of my test wiki, the following messages were shown: navigation, notifications, user-interface-preferences, personaltools, variants, views, associated-pages, cactions and toolbox. Impact This impacts wikis where a group has the editinterface but not the editsitejs user right.

    Recommended action: Upgrade to 3.3.1 or later, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.

    Sources:github.comSource checked Evidence →
  6. Medium, CVSS 6.5PackagistPublished

    starcitizentools/citizen-skin allows stored XSS in preference menu heading messages

    CVE-2025-49577 · GHSA-jwr7-992g-68mh

    Affected
    • Packagist starcitizentools/citizen-skin >= 2.13.0, < 3.3.1
    Fixed in
    3.3.1· Vendor fix available
    Issue
    Various preferences messages are inserted into raw HTML, allowing anybody who can edit those messages to insert arbitrary HTML into the DOM. Details The innerHtml of the label div is set to the textContent of the label, essentially unsanitizing the system messages: https://github.com/StarCitizenTools/mediawiki-skins-Citizen/blob/407052e7069bdeae927d6f1a2a1c9a45b473bf9a/resources/skins.citizen.preferences/addPortlet.polyfill.js#L18 PoC 1. Edit citizen-feature-custom-font-size-name (or any other message displayed in a heading in the preferences menu) to <img src="" onerror="alert('citizen-feature-custom-font-size-name')" (script tags don't work here due to the way the HTML is inserted) 2. Open the preferences menu

    Recommended action: Upgrade to 3.3.1 or later, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.

    Sources:github.comSource checked Evidence →
  7. Medium, CVSS 6.5PackagistPublished

    starcitizentools/citizen-skin allows stored XSS in search no result messages

    CVE-2025-49576 · GHSA-86xf-2mgp-gv3g

    Affected
    • Packagist starcitizentools/citizen-skin >= 2.31.0, < 3.3.1
    Fixed in
    3.3.1· Vendor fix available
    Issue
    The citizen-search-noresults-title and citizen-search-noresults-desc system messages are inserted into raw HTML, allowing anybody who can edit those messages to insert arbitrary HTML into the DOM. Details The system messages are inserted as raw HTML by the mustache template: https://github.com/StarCitizenTools/mediawiki-skins-Citizen/blob/407052e7069bdeae927d6f1a2a1c9a45b473bf9a/resources/skins.citizen.search/templates/TypeaheadPlaceholder.mustache#L8-L9 PoC 1. Edit citizen-search-noresults-title and citizen-search-noresults-desc to <img src="" onerror="alert('citizen-search-noresults-title')" and <img src="" onerror="alert('citizen-search-noresults-desc')" (script tags don't work here due to the way the HTML is inserted) 2. Open the search bar and search for a page that doesn't exist to get the "no results" messages to show up Impact This impacts wikis where a group has the editinterface but not the editsitejs user right.

    Recommended action: Upgrade to 3.3.1 or later, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.

    Sources:github.comSource checked Evidence →
  8. Medium, CVSS 6.5PackagistPublished

    Citizen skin vulnerable to stored XSS through multiple system messages

    CVE-2025-49575 · GHSA-4c2h-67qq-vm87

    Affected
    • Packagist starcitizentools/citizen-skin >= 2.4.2, < 3.3.1
    Fixed in
    3.3.1· Vendor fix available
    Issue
    Multiple system messages are inserted into the CommandPaletteFooter as raw HTML, allowing anybody who can edit those messages to insert arbitrary HTML into the DOM. Details The messages are retrieved using the plain() output mode: https://github.com/StarCitizenTools/mediawiki-skins-Citizen/blob/072e4365e9084e4b153eac62d3666566c06f5a49/resources/skins.citizen.commandPalette/components/CommandPaletteFooter.vue#L61-L66 currentTip is set to one of these messages: https://github.com/StarCitizenTools/mediawiki-skins-Citizen/blob/072e4365e9084e4b153eac62d3666566c06f5a49/resources/skins.citizen.commandPalette/components/CommandPaletteFooter.vue#L69 currentTip is inserted as raw HTML (vue/no-v-html should not be ignored here): https://github.com/StarCitizenTools/mediawiki-skins-Citizen/blob/072e4365e9084e4b153eac62d3666566c06f5a49/resources/skins.citizen.commandPalette/components/CommandPaletteFooter.vue#L3-L4 PoC 1. Edit citizen-command-palette-tip-commands,…

    Recommended action: Upgrade to 3.3.1 or later, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.

    Sources:github.comSource checked Evidence →
  9. Medium, CVSS 4.8PackagistPublished

    starcitizentools/citizen-skin vulnerable to stored, self-XSS in the "real name" field

    CVE-2024-47536 · GHSA-62r2-gcxr-426x

    Affected
    • Packagist starcitizentools/citizen-skin >= 2.6.3, < 2.31.0
    Fixed in
    2.31.0· Vendor fix available
    Issue
    A user with the editmyprivateinfo right or who can otherwise change their name can XSS themselves by setting their "real name" to an XSS payload. Details Here's the offending line: https://github.com/StarCitizenTools/mediawiki-skins-Citizen/blob/d45c3d69f30863f622f16eb40dd41d3ca943454a/includes/Components/CitizenComponentUserInfo.php#L137 This was introduced in 717d16af35b10dab04d434aefddbf991fc8c168c PoC 1. Login 2. Go to Special:Preferences 3. Set the real name field to a string like <scriptalert("Admin with a propensity for self-XSSes")</script 4. Save your settings and use Citizen if it's not being used already Impact Any user who can change their name (whether it's through the editmyprivateinfo right or through other means) can add XSS payloads that trigger for themselves only.

    Recommended action: Upgrade to 2.31.0 or later, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.

    Sources:github.comSource checked Evidence →