Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCraft forged unsigned cursor token with script in sort_prop
-
DeliveryDeliver malicious Special:Ask link to victim
-
ExploitVictim clicks link, sort anchor mismatches request
-
ExecutionRaw error string bypasses sanitization into Html::errorBox()
-
ImpactScript executes in wiki origin, hijacks session/actions
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires that the wiki runs Semantic MediaWiki 7.0.0 through 7.1.0, where Special:Ask exposes the keyset-pagination cursor parameter (introduced in 7.0.0). No authentication or special permission is needed - any anonymous user can trigger it. Exploitation requires victim user interaction: the target must open an attacker-crafted link (e.g. Special:Ask?q=...&p[cursor]=<forged token> whose decoded JSON is {"v":1,"sort_prop":"<script>...</script>"}), and the cursor's sort anchor must mismatch the request's sort=/order= to reach the error path. Exploitation is aided by the absence of a Content-Security-Policy on responses, which allows inline script to run; a wiki enforcing a restrictive CSP would blunt inline-script payloads. Upgrading to 7.2.0 removes the vulnerability. |
| Impact | This is a genuine but moderate-severity reflected XSS (CWE-79). The vendor CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N = 6.1) is consistent with a classic reflected XSS: network-reachable, low complexity, no privileges, but requiring victim interaction (clicking a crafted link), with a scope change (script runs in the wiki origin, a different security context than the vulnerable server component) and limited direct confidentiality/integrity impact. No EPSS score, KEV entry, or SSVC decision data was provided in the input, so exploitation-probability and automatability cannot be quantified. However, the GHSA advisory explicitly states the payload was 'Confirmed executing in a browser' and that responses carry no Content-Security-Policy, so inline script is not blocked - this constitutes publicly documented, working exploit detail even though no standalone weaponized exploit tool is referenced. The realistic risk profile is targeted, not wormable: exploitation needs a victim to follow an attacker-crafted link, which caps mass-automation potential. This is a real fix-worthy issue for exposed wikis but not a drop-everything critical; the 6.1 rating fairly reflects the UI:R gating. Key missing signals: no EPSS, no KEV, no independent confirmation beyond the vendor's own advisory. |
| Exploit ScenarioDerived | An attacker crafts a link to Special:Ask containing a forged base64url cursor token whose decoded JSON sets sort_prop (or sort_order) to an HTML/script payload, then lures a victim (via phishing, forum post, or wiki edit) into clicking it. Because the cursor is unsigned and its sort anchor deliberately mismatches the request's sort=/order=, SMW builds a raw error string that bypasses message-layer sanitization and is emitted as raw HTML by Html::errorBox(), executing the script in the victim's browser on the wiki origin. The vendor advisory confirms the payload was observed executing in a browser and notes the absence of any Content-Security-Policy to block inline script. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 18, 2026
Reflected cross-site scripting in Semantic MediaWiki 7.0.0 through 7.1.0 lets an unauthenticated attacker execute arbitrary script in a victim's browser on the wiki origin by tricking them into opening a crafted Special:Ask link carrying a forged cursor pagination token. The cursor parameter added in 7.0.0 is an unsigned base64url-encoded JSON blob, so its sort_prop and sort_order fields are fully attacker-controlled; when they mismatch the request's sort=/order= values, the resulting error string is interpolated into Query::addErrors() and rendered as raw HTML by Html::errorBox(), bypassing the message-layer sanitization that normally protects SMW error output. Exploitation requires victim interaction (clicking the link) and is aided by the absence of a Content-Security-Policy on responses, which permits inline script to run; there is no confirmed active exploitation and no public exploit code identified at time of analysis, though the maintainer advisory documents a browser-confirmed reproduction, and the CVSS 3.1 score is 6.1 with a scope change. Upgrading to 7.2.0 removes the vulnerability.
RemediationAI
Vendor-released patch: upgrade Semantic MediaWiki to 7.2.0, which output-encodes the attacker-controlled sort_prop and sort_order values before they are interpolated into the error text in QueryCreator so that no raw user input enters the query error stream; for Composer-managed installs, update composer/mediawiki/semantic-media-wiki to 7.2.0 or later and run the standard MediaWiki update.php maintenance step, then purge parser/query caches as needed. Refer to the advisory at https://github.com/SemanticMediaWiki/SemanticMediaWiki/security/advisories/GHSA-cx86-7xwp-w9wf and the release notes at https://github.com/SemanticMediaWiki/SemanticMediaWiki/releases/tag/7.2.0. If an immediate upgrade is not possible, compensating controls are: restrict or disable public access to Special:Ask (for example via MediaWiki's $wgWhitelistRead, group permissions, a web-server rule blocking index.php?title=Special:Ask, or a robots/edge rule) - this reduces exposure but breaks legitimate inline #ask queries and any links users share to the query interface; and deploy a restrictive Content-Security-Policy header (script-src without 'unsafe-inline', ideally with nonces/hashes) on the wiki, since the advisory notes responses carry no CSP today and inline payloads run unimpeded - CSP is effective against this inline-script payload but requires auditing MediaWiki's own inline scripts and can break extensions or skins that rely on inline JS. Note that the separate format=debug reflection path was hardened independently in GHSA-q5fm-9mx6-44f4, so partial code-level fixes that touch only one path leave residual risk.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in composer, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Semantic MediaWiki (SMW) extends MediaWiki with structured, queryable data stored in wiki pages, and Special:Ask is its query interface. Release 7.0.0 introduced keyset pagination for Special:Ask via a cursor query parameter, encoded and decoded by a CursorEncoder that emits an unsigned base64url-encoded JSON blob (for example {"v":1,"sort_prop":"...","sort_order":"..."}) with no integrity protection - the classic CWE-79 prerequisites of untrusted input reaching a raw HTML sink. The root cause is a trust-boundary violation in QueryCreator::applyCursorIfRequested(): when the cursor's sort anchor disagrees with the request's sort=/order= arguments, the attacker-influenced sort_prop and sort_order values are concatenated into a raw error string via Query::addErrors() rather than emitted as a message key. ProcessingErrorMsgHandler::normalizeAndDecodeMessages() only sanitizes message keys and encoded messages, so a plain non-key string passes through unchanged; ErrorWidget::queryError() then collects the errors and hands them to Html::errorBox(), whose first argument is deliberately emitted as raw HTML to support markup in error boxes. The attacker-controlled markup therefore lands in the page as HTML/script on the wiki origin. The CPE cpe:2.3:a:semanticmediawiki:semanticmediawiki:*:*:*:*:*:*:*:* covers the extension as a whole, and the affected Composer package is composer/mediawiki/semantic-media-wiki >= 7.0.0, <= 7.1.0. A related reflection through the format=debug output path was hardened separately under GHSA-q5fm-9mx6-44f4.
Know when Mediawiki gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
Classic reflected XSS delivered via crafted link: network vector, no auth, low complexity, victim click (UI:R), script escapes to browser origin (S:C) with limited C/I and no availability impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
Semantic MediaWiki is a free, open-source extension to MediaWiki that lets users store and query data within the wiki's pages. In versions 7.0.0 through 7.1.0, Special:Ask accepts a cursor query parameter for keyset pagination (added in 7.0.0). The token is decoded by CursorEncoder, which is an unsigned base64url-encoded JSON blob, so its contents are fully attacker-controlled. When the cursor's sort anchor does not match the request's sort= / order=, QueryCreator::applyCursorIfRequested() builds an error message by interpolating the attacker-controlled sort_prop / sort_order values into a raw string via Query::addErrors(). Unlike SMW's message-key errors, this raw string bypasses the message layer's sanitization (ProcessingErrorMsgHandler::normalizeAndDecodeMessages() passes a non-key, non-encoded string through unchanged). ErrorWidget::queryError() then assembles the errors and passes them to Html::errorBox(), whose first argument is emitted as raw HTML. The result is a reflected cross-site scripting vulnerability: a crafted cursor token containing markup in sort_prop (or sort_order) executes script in the victim's browser on the wiki origin. No authentication or special permission is required. The payload is delivered via a crafted link. Version 7.2.0 contains a fix.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
MediaWiki 1.22.x before 1.22.2, 1.21.x before 1.21.5, and 1.19.x before 1.19.11, when DjVu or PDF file upload support is
The MWOAuthDataStore::lookup_token function in Extension:OAuth for MediaWiki 1.25.x before 1.25.3, 1.24.x before 1.24.4,
An issue was discovered in the CheckUser extension for MediaWiki through 1.39.3. Rated critical severity (CVSS 9.8), thi
The admin API module in the QuizGame extension for MediaWiki through 1.37.2 (before 665e33a68f6fa1167df99c0aa18ed0157cdf
The SemanticDrilldown extension for MediaWiki through 1.37.2 (before e688bdba6434591b5dff689a45e4d53459954773) allows SQ
An issue was discovered in MediaWiki through 1.37.1. Rated critical severity (CVSS 9.8), this vulnerability is remotely
An issue was discovered in MediaWiki through 1.37.1. Rated critical severity (CVSS 9.8), this vulnerability is remotely
An issue was discovered in the CentralAuth extension in MediaWiki through 1.36. Rated critical severity (CVSS 9.8), this
An issue was discovered in the AbuseFilter extension in MediaWiki through 1.36. Rated critical severity (CVSS 9.8), this
api.php in MediaWiki before 1.27.4, 1.28.x before 1.28.3, and 1.29.x before 1.29.2 has a Reflected File Download vulnera
Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection') vulnerability in The Wikimedia Foun
An issue was discovered in the FileImporter extension in MediaWiki through 1.36. Rated high severity (CVSS 8.8), this vu
EUVD-2026-83189
GHSA-cx86-7xwp-w9wf
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB