Skip to main content

Semantic MediaWiki CVE-2026-77616

| EUVDEUVD-2026-83189 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-09-18 GitHub_M GHSA-cx86-7xwp-w9wf
6.1
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Craft forged unsigned cursor token with script in sort_prop
  2. Delivery
    Deliver malicious Special:Ask link to victim
  3. Exploit
    Victim clicks link, sort anchor mismatches request
  4. Execution
    Raw error string bypasses sanitization into Html::errorBox()
  5. Impact
    Script 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

SemanticMediaWiki 7.0.0, < 7.2.0

Affected Packages

composer mediawiki/semantic-media-wiki fix: 7.2.0
euvd semanticmediawiki_7_0_0 fix: 7.2.0

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

Vendor (GitHub_M) PRIMARY 6.1 MEDIUM
AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
vuln.today AI 6.1 MEDIUM

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.

3.1 AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:P/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
Required
Scope
Changed
Confidentiality
Low
Integrity
Low
Availability
None

Lifecycle Timeline

1
Patch available
Sep 18, 2026 - 18:03 EUVD

DescriptionCVE.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

EPSS Score
0.2%
Top 90% exploitable
Prevalence
Medium
popular MediaWiki extension but confined to wikis running it
Threat Intel
1
1 sources
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA GitHub

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

30
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +30
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

CVE-2014-1610 MEDIUM POC
6.0 Jan 30

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

CVE-2015-8009 CRITICAL POC
9.8 Jul 25

The MWOAuthDataStore::lookup_token function in Extension:OAuth for MediaWiki 1.25.x before 1.25.3, 1.24.x before 1.24.4,

CVE-2023-37303 CRITICAL POC
9.8 Jun 30

An issue was discovered in the CheckUser extension for MediaWiki through 1.39.3. Rated critical severity (CVSS 9.8), thi

CVE-2022-29906 CRITICAL POC
9.8 Apr 29

The admin API module in the QuizGame extension for MediaWiki through 1.37.2 (before 665e33a68f6fa1167df99c0aa18ed0157cdf

CVE-2022-29904 CRITICAL POC
9.8 Apr 29

The SemanticDrilldown extension for MediaWiki through 1.37.2 (before e688bdba6434591b5dff689a45e4d53459954773) allows SQ

CVE-2022-28206 CRITICAL POC
9.8 Mar 30

An issue was discovered in MediaWiki through 1.37.1. Rated critical severity (CVSS 9.8), this vulnerability is remotely

CVE-2022-28205 CRITICAL POC
9.8 Mar 30

An issue was discovered in MediaWiki through 1.37.1. Rated critical severity (CVSS 9.8), this vulnerability is remotely

CVE-2021-36128 CRITICAL POC
9.8 Jul 02

An issue was discovered in the CentralAuth extension in MediaWiki through 1.36. Rated critical severity (CVSS 9.8), this

CVE-2021-36126 CRITICAL POC
9.8 Jul 02

An issue was discovered in the AbuseFilter extension in MediaWiki through 1.36. Rated critical severity (CVSS 9.8), this

CVE-2017-8809 CRITICAL
9.8 Nov 15

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

CVE-2024-47849 HIGH POC
8.8 Oct 05

Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection') vulnerability in The Wikimedia Foun

CVE-2021-36132 HIGH POC
8.8 Jul 02

An issue was discovered in the FileImporter extension in MediaWiki through 1.36. Rated high severity (CVSS 8.8), this vu

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy