CVE-2025-24981

9.3 CRITICAL

📋 TL;DR

CVE-2025-24981 is a cross-site scripting (XSS) vulnerability in the MDC markdown parser that allows attackers to bypass URL filtering by encoding JavaScript URLs with hex HTML entities. This enables arbitrary JavaScript execution when users click malicious links in parsed markdown content. All applications using vulnerable versions of MDC that process untrusted markdown input are affected.

💻 Affected Systems

Products:
  • MDC (Markdown Components) for Vue/Nuxt
Versions: All versions before 0.13.3
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects applications that parse markdown from untrusted sources. The vulnerability exists in the URL parsing logic in props.ts.

⚠️ 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

Complete account takeover, session hijacking, or malware distribution through client-side attacks when users interact with malicious markdown content.

🟠

Likely Case

Stored XSS attacks leading to credential theft, data exfiltration, or unauthorized actions in user sessions.

🟢

If Mitigated

Limited impact with proper input validation and output encoding, though the vulnerability bypasses existing security controls.

🌐 Internet-Facing: HIGH - Any web application using MDC with user-generated content is vulnerable to XSS attacks from external attackers.
🏢 Internal Only: MEDIUM - Internal applications could still be exploited through insider threats or compromised internal accounts.

🎯 Exploit Status

Public PoC: ⚠️ Yes
Weaponized: LIKELY
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

The exploit requires user interaction (clicking a link) but the bypass technique is simple and well-documented in the advisory.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 0.13.3

Vendor Advisory: https://github.com/nuxt-modules/mdc/security/advisories/GHSA-j82m-pc2v-2484

Restart Required: No

Instructions:

1. Update MDC dependency to version 0.13.3 or later. 2. Run npm update @nuxtjs/mdc or yarn upgrade @nuxtjs/mdc. 3. Rebuild and redeploy your application.

🔧 Temporary Workarounds

Input sanitization

all

Implement additional URL validation and sanitization before passing markdown to MDC parser

🧯 If You Can't Patch

  • Disable markdown parsing from untrusted sources entirely
  • Implement strict Content Security Policy (CSP) to block inline JavaScript execution

🔍 How to Verify

Check if Vulnerable:

Check package.json for MDC version below 0.13.3 and verify if your application processes user-provided markdown

Check Version:

npm list @nuxtjs/mdc or check package.json for "@nuxtjs/mdc" version

Verify Fix Applied:

Confirm MDC version is 0.13.3 or higher in package.json and test with known malicious payloads

📡 Detection & Monitoring

Log Indicators:

  • Unusual markdown parsing errors
  • JavaScript execution from markdown links
  • URLs with hex-encoded javascript: protocol

Network Indicators:

  • Outbound connections triggered by markdown content
  • Suspicious JavaScript payloads in markdown processing

SIEM Query:

Search for 'javascript:' variations in user input or markdown processing logs, particularly hex-encoded versions

🔗 References

📤 Share & Export