CVE-2025-23080

5.3 MEDIUM

📋 TL;DR

This CVE describes a cross-site scripting (XSS) vulnerability in the MediaWiki OpenBadges extension. Attackers can inject malicious scripts into web pages, potentially compromising user sessions or stealing sensitive data. Affected users include anyone running vulnerable versions of MediaWiki with the OpenBadges extension enabled.

💻 Affected Systems

Products:
  • Wikimedia Foundation Mediawiki - OpenBadges Extension
Versions: MediaWiki 1.39.X before 1.39.11, 1.41.X before 1.41.3, 1.42.X before 1.42.2
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects installations with the OpenBadges extension enabled. The vulnerability exists in how the extension handles input during web page generation.

⚠️ Manual Verification Required

This CVE does not have specific version information in our database, so automatic vulnerability detection cannot determine if your system is affected.

Why? The CVE database entry doesn't specify which versions are vulnerable (no version ranges provided by the vendor/NVD).

🔒 Custom verification scripts are available for registered users. Sign up free to download automated test scripts.

Recommended Actions:
  1. Review the CVE details at NVD
  2. Check vendor security advisories for your specific version
  3. Test if the vulnerability is exploitable in your environment
  4. Consider updating to the latest version as a precaution

⚠️ Risk & Real-World Impact

🔴

Worst Case

Attackers could steal administrator credentials, deface websites, or redirect users to malicious sites, potentially leading to complete system compromise if combined with other vulnerabilities.

🟠

Likely Case

Session hijacking, cookie theft, or credential harvesting from users who visit maliciously crafted pages.

🟢

If Mitigated

Limited impact if proper Content Security Policy (CSP) headers are implemented and user input validation is enforced elsewhere.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

XSS vulnerabilities typically have low exploitation complexity. The vulnerability allows injection during web page generation, suggesting reflected or stored XSS possibilities.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: MediaWiki 1.39.11, 1.41.3, or 1.42.2

Vendor Advisory: https://phabricator.wikimedia.org/T381220

Restart Required: No

Instructions:

1. Update MediaWiki to version 1.39.11, 1.41.3, or 1.42.2. 2. Verify the OpenBadges extension is updated as part of the MediaWiki update. 3. Clear any caches if applicable.

🔧 Temporary Workarounds

Disable OpenBadges Extension

all

Temporarily disable the vulnerable extension until patching is possible.

Edit LocalSettings.php and remove or comment out the line: wfLoadExtension('OpenBadges');

Implement Content Security Policy

all

Add CSP headers to mitigate XSS impact by restricting script execution sources.

Add to web server configuration or MediaWiki settings: Content-Security-Policy: default-src 'self'; script-src 'self'

🧯 If You Can't Patch

  • Disable the OpenBadges extension immediately.
  • Implement strict input validation and output encoding for all user inputs in custom code.

🔍 How to Verify

Check if Vulnerable:

Check MediaWiki version and verify OpenBadges extension is enabled. Vulnerable if version is 1.39.0-1.39.10, 1.41.0-1.41.2, or 1.42.0-1.42.1.

Check Version:

Check MediaWiki version via Special:Version page or examine includes/DefaultSettings.php for $wgVersion.

Verify Fix Applied:

Confirm MediaWiki version is 1.39.11, 1.41.3, or 1.42.2. Test XSS payloads in OpenBadges functionality to ensure they are properly sanitized.

📡 Detection & Monitoring

Log Indicators:

  • Unusual script tags or JavaScript in URL parameters or POST data related to OpenBadges functionality.
  • Multiple failed XSS attempts in web server logs.

Network Indicators:

  • HTTP requests containing suspicious script tags or encoded payloads targeting OpenBadges endpoints.

SIEM Query:

source="web_server_logs" AND (uri="*OpenBadges*" OR uri="*badge*") AND (content="<script>" OR content="javascript:" OR content="onerror=" OR content="onload=")

🔗 References

📤 Share & Export