TabberNeue vulnerable to Stored XSS through wikitext
High severity
GitHub Reviewed
Published
Jun 27, 2025
in
StarCitizenTools/mediawiki-extensions-TabberNeue
•
Updated Jun 27, 2025
Package
Affected versions
>= 3.0.0, < 3.1.1
Patched versions
3.1.1
Description
Published by the National Vulnerability Database
Jun 27, 2025
Published to the GitHub Advisory Database
Jun 27, 2025
Reviewed
Jun 27, 2025
Last updated
Jun 27, 2025
Summary
Arbitrary HTML can be inserted into the DOM by inserting a payload into any allowed attribute of the
<tabber>
tag.Details
The
args
provided within the wikitext as attributes to the<tabber>
tag are passed to the TabberComponentTabs class:https://github.com/StarCitizenTools/mediawiki-extensions-TabberNeue/blob/3a23b703ce36cfc4128e7921841f68230be4059a/includes/Tabber.php#L76
In TabberComponentTabs, the attributes are validated before being supplied to the Tabs template.
https://github.com/StarCitizenTools/mediawiki-extensions-TabberNeue/blob/3a23b703ce36cfc4128e7921841f68230be4059a/includes/Components/TabberComponentTabs.php#L15-L31
However, the validation is insufficient.
What
Sanitizer::validateTagAttributes
does is callvalidateAttributes
, whichHowever, the attribute values are expected to be escaped when inserted into HTML.
The attribute values are then inserted into HTML without being escaped:
https://github.com/StarCitizenTools/mediawiki-extensions-TabberNeue/blob/3a23b703ce36cfc4128e7921841f68230be4059a/includes/templates/Tabs.mustache#L1
PoC
XSS through attributes:
XSS through script tags:
Impact
Arbitrary HTML can be inserted into the DOM by any user, allowing for JavaScript to be executed.
References