GHSA-hw3m-8j5x-94ff: Medium severity composer/mediawiki/semantic-media-wiki vulnerability
Failure mode
Special:URIResolver resolves its user-controlled subpage to a MediaWiki title and issues an HTTP 303 redirect to $title->getFullURL() without validating the resolved target. A crafted subpage can make that target point off-host: an interwiki prefix redirects to the foreign wiki (for example Special:URIResolver/mw-3AFoo, which decodes to mw:Foo, redirects to https://www.mediawiki.org/wiki/Foo), and where the resolved URL carries an authority the target can even embed user:pass@host credentials. The result is an open redirect to an attacker-influenced host, usable for phishing from a trusted wiki URL.
Remediation
- The resolved target URL is parsed and compared against the current host at the redirect sink. - The redirect is rejected (bad-title error page) when a user or pass component is present, or when the host does not match the current host.
Maintenance note
Redirect code must validate the final target URL, not just the input path. Host comparison belongs at the redirect sink: each sink (special page, entry point) must validate its own target rather than relying on upstream normalisation.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
composer/mediawiki/semantic-media-wikito a version that resolves this vulnerability.Fixed in 7.2.0
Event History
Frequently Asked Questions
What does an attacker need to exploit this issue?
An attacker needs to craft a Special:URIResolver subpage that resolves to an off-host target and persuade a victim to follow the resulting trusted-wiki URL. No attacker privileges are required, but user interaction is required.
Can the redirect target contain embedded credentials?
Yes. Where the resolved URL includes an authority component, the redirect target can embed user:pass@host credentials. Remediation rejects targets containing either a user or password component.
What should be validated if an immediate code-level mitigation is needed?
Parse the final resolved target URL at the redirect sink and compare its host with the current host. Reject the redirect with a bad-title error when the host differs or when user or password components are present.
Is validating the supplied path alone sufficient?
No. Validation must apply to the final target URL after title resolution, because each redirect sink must validate its own target rather than relying on upstream path normalization.