Page MenuHomePhabricator

CVE-2025-62656: GlobalBlocking Special:GlobalBlockList vulnerable to message key stored XSS
Closed, ResolvedPublicSecurity

Description

The Special:GlobalBlockList page is vulnerable to message key XSS through several messages.

Problem messages

The problem messages are:

  • globalblocking-block-flag-account-creation-disabled
  • globalblocking-block-flag-autoblock-disabled

There may be other message keys that are problems, because this seems to be to all global block flags as opposed to specific global block flags:

image.png (981×303 px, 23 KB)

Acceptance criteria

  • Special:GlobalBlockList page is not vulnerable to message key XSS

Event Timeline

For the 2 messages implicated in this task, it looks like codesearch finds 4 problematic instances of each (1, 2)? And the solution should just be a s/text/escaped/.

Probably? I don't know if the messages are a problem on Special:Log as I can't seem to trigger the i18n XSS locally with my GlobalBlocking logs.

@sbassett can we do this fix publicly? I think the risk is low enough here, especially as the extension is not bundled.

@sbassett can we do this fix publicly? I think the risk is low enough here, especially as the extension is not bundled.

I'm fine with that as I think this and similar issues are fairly low risk. It would nice though to time this so that the patch wasn't in gerrit for that long, e.g. push, CR and merge it in gerrit on a Monday before TrainBranchBot runs.

sbassett changed Author Affiliation from N/A to WMF Product.Sep 4 2025, 3:05 PM
sbassett changed Risk Rating from N/A to Low.

Change #1185980 had a related patch set uploaded (by Dreamy Jazz; author: Dreamy Jazz):

[mediawiki/extensions/GlobalBlocking@master] Properly escape block flags in GlobalBlockingGlobalBlockDetailsRenderer

https://gerrit.wikimedia.org/r/1185980

@sbassett can we do this fix publicly? I think the risk is low enough here, especially as the extension is not bundled.

I'm fine with that as I think this and similar issues are fairly low risk. It would nice though to time this so that the patch wasn't in gerrit for that long, e.g. push, CR and merge it in gerrit on a Monday before TrainBranchBot runs.

Thanks. I've created the patch and will ask for someone on the team to review today.

Change #1185980 merged by jenkins-bot:

[mediawiki/extensions/GlobalBlocking@master] Properly escape block flags in GlobalBlockingGlobalBlockDetailsRenderer

https://gerrit.wikimedia.org/r/1185980

Change #1188800 had a related patch set uploaded (by Dreamy Jazz; author: Dreamy Jazz):

[mediawiki/extensions/GlobalBlocking@REL1_44] Properly escape block flags in GlobalBlockingGlobalBlockDetailsRenderer

https://gerrit.wikimedia.org/r/1188800

Change #1188802 had a related patch set uploaded (by Dreamy Jazz; author: Dreamy Jazz):

[mediawiki/extensions/GlobalBlocking@REL1_43] Properly escape block flags in GlobalBlockingGlobalBlockDetailsRenderer

https://gerrit.wikimedia.org/r/1188802

Change #1188804 had a related patch set uploaded (by Dreamy Jazz; author: Dreamy Jazz):

[mediawiki/extensions/GlobalBlocking@REL1_39] Properly escape block flags in GlobalBlockingGlobalBlockDetailsRenderer

https://gerrit.wikimedia.org/r/1188804

Change #1188804 abandoned by Dreamy Jazz:

[mediawiki/extensions/GlobalBlocking@REL1_39] Properly escape block flags in GlobalBlockingGlobalBlockDetailsRenderer

Reason:

Release 1.39 does not have this problem

https://gerrit.wikimedia.org/r/1188804

Change #1188800 merged by jenkins-bot:

[mediawiki/extensions/GlobalBlocking@REL1_44] Properly escape block flags in GlobalBlockingGlobalBlockDetailsRenderer

https://gerrit.wikimedia.org/r/1188800

Change #1188802 merged by jenkins-bot:

[mediawiki/extensions/GlobalBlocking@REL1_43] Properly escape block flags in GlobalBlockingGlobalBlockDetailsRenderer

https://gerrit.wikimedia.org/r/1188802

sbassett renamed this task from GlobalBlocking Special:GlobalBlockList vulnerable to message key stored XSS to CVE-2025-62656: GlobalBlocking Special:GlobalBlockList vulnerable to message key stored XSS.Oct 20 2025, 8:15 PM
sbassett triaged this task as Low priority.
sbassett changed the visibility from "Custom Policy" to "Public (No Login Required)".
sbassett changed the edit policy from "Custom Policy" to "All Users".