CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-84992

CVE-2026-84992: Cross-Site Scripting (XSS) via Fenced Code Block Parsing in md-editor-v3

Amit Schendel
Amit Schendel
Senior Security Researcher

Sep 19, 2026·6 min read·4 visits

Executive Summary (TL;DR)

A Cross-Site Scripting (XSS) vulnerability exists in md-editor-v3 prior to version 6.5.4, allowing unauthenticated remote execution of client-side scripts via crafted Markdown containing malicious fenced-code headers.

CVE-2026-84992 is a Cross-Site Scripting (XSS) vulnerability affecting md-editor-v3 before version 6.5.4. It occurs because the fenced-code block language parser directly interpolates unescaped language metadata into unquoted HTML attributes inside the custom rendering callback. This bypasses the built-in XSSPlugin which runs during the parsing phase, before rendering.

Vulnerability Overview

The md-editor-v3 package is a Markdown editor designed for Vue 3, implemented using JSX and TypeScript. It relies on the popular markdown-it parsing engine to transform Markdown inputs into structured HTML output. This parsing flow exposes an attack surface when processing user-defined metadata associated with fenced code blocks.

The vulnerability, tracked as CVE-2026-84992, represents an improper neutralization of input during web page generation, specifically a Cross-Site Scripting (XSS) vulnerability. The flaw resides in how the editor extracts and processes the language identifier from fenced code blocks inside its custom renderer logic. When the renderer constructs the wrapper HTML, it fails to sanitize or properly quote the extracted language metadata before inserting it into the final DOM container.

Applications utilizing md-editor-v3 for displaying user-generated content, such as discussion boards, comments, or documentation platforms, are directly exposed to this vulnerability. An attacker can exploit this flaw to execute arbitrary client-side script code in the context of the victim's browser session.

Root Cause Analysis

The technical root cause of CVE-2026-84992 lies in the custom rendering configuration of the markdown-it instance defined in packages/MdEditor/layouts/Content/composition/useMarkdownIt.ts. In markdown parsing, fenced code blocks are defined by triple backticks followed by an optional info string denoting the programming language. The editor extracts this info string and assigns it to a variable representing the language.

During the rendering pass, the custom hook generates a raw HTML string using standard ES6 template literals. The extracted language variable is interpolated directly into two locations: the class attribute of the code tag and a custom language attribute of the same tag. Crucially, the custom language attribute is defined without surrounding double or single quotes, resulting in the structure: language=${language}.

Furthermore, the application's built-in defense mechanism, XSSPlugin, fails to catch this injection. The XSSPlugin is registered as a token-level filter that sanitizes explicit inline HTML tokens (html_block and html_inline) before the final rendering stage. Because the custom code-fence renderer operates during the rendering execution phase itself, it generates new HTML markup after the token-level sanitization pass is complete. This architectural order of operations effectively bypasses the built-in XSS filter entirely.

Code Analysis

An examination of the vulnerable implementation in useMarkdownIt.ts reveals the structural flaw in the code block renderer. The renderer constructs the returned HTML string using raw concatenation of the unescaped language variable.

// Vulnerable implementation in useMarkdownIt.ts
return `<pre><code class="language-${language}" language=${language}>${codeSpan}</code></pre>`;

In this structure, the lack of quotes around the second language attribute allows space-separated arguments to be interpreted as distinct HTML attributes by the browser's parser. In addition, the lack of HTML escaping means characters like double quotes can break out of the class attribute string.

The patch introduced in commit 2c07360420e74087f5bc63032ab155d93e0a0b10 corrects this behavior by introducing strict HTML escaping and proper quoting of attributes. The updated code utilizes the utility function md.utils.escapeHtml to neutralize any dangerous characters prior to interpolation.

// Patched implementation in useMarkdownIt.ts
const escapedLanguage = md.utils.escapeHtml(language);
return `<pre><code class="language-${escapedLanguage}" language="${escapedLanguage}">${codeSpan}</code></pre>`;

This patch successfully prevents attribute breakout by converting character literals such as " to &quot;, < to &lt;, and > to &gt;. Additionally, a parallel DOM-based vulnerability was addressed in useCopyCode.ts where visual text updates were shifted from the dangerous innerHTML sink to the safe textContent API, neutralizing downstream DOM manipulation vectors.

Exploitation Methodology

Exploiting CVE-2026-84992 is straightforward and requires no prior privileges or complex authentication, assuming the target application accepts user-controlled Markdown. The attacker constructs a markdown payload utilizing a fenced code block with a custom language attribute designed to inject malicious HTML handlers.

The payload leverages the unquoted attribute in the generated HTML to append custom event handlers, such as onmouseover or onload, alongside a style block that stretches the element across the entire viewport. A schematic representation of the exploit payload is detailed below:

```js"onmouseover="alert(document.domain)"style="display:block;width:100vw;height:100vh;position:fixed;top:0;left:0;"
// Exploit payload triggers on mouse movement

When parsed by the vulnerable version of md-editor-v3, this Markdown is processed into the following raw HTML output:

&lt;pre&gt;&lt;code class="language-js"onmouseover="alert(document.domain)"style="display:block;width:100vw;height:100vh;position:fixed;top:0;left:0;"" language=js"onmouseover="alert(document.domain)"style="display:block;width:100vw;height:100vh;position:fixed;top:0;left:0;""&gt;...&lt;/code&gt;&lt;/pre&gt;

In this output, the browser interprets the first double quote in the input as the closing quote for the class attribute. The subsequent string onmouseover="alert(document.domain)" is processed as a standard event handler. The injected inline CSS ensures that the code element fills the entire browser window, forcing an immediate execution of the script as soon as the user moves their mouse over any part of the page.

Impact Assessment

The impact of this vulnerability is classified as Medium, receiving a CVSS v3.1 base score of 6.1 (CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N). The scope is changed (S:C) because the execution of script content occurs within the context of the user's browser, allowing access to resources outside the direct scope of the editor itself.

By executing arbitrary JavaScript in the user's browser, an attacker can access session identifiers, cookies, local storage tokens, or other sensitive information. If the target application relies on session cookies without the HttpOnly flag, the attacker can hijack active sessions and impersonate the victim.

Furthermore, the attacker can perform unauthorized actions on behalf of the user, such as modifying profile data, submitting form requests, or executing DOM-based modifications (defacement). In highly privileged sessions (e.g., administrator panels), this could lead to full control over application state or user accounts.

Detection and Remediation Guidance

Organizations can detect vulnerable instances of md-editor-v3 by auditing dependency trees within node projects. Searching lockfiles (package-lock.json, yarn.lock, or pnpm-lock.yaml) for references to md-editor-v3 with versions prior to 6.5.4 will pinpoint vulnerable deployments.

The recommended mitigation is to upgrade the md-editor-v3 package to version 6.5.4 or later, which contains the complete fix. The patch resolves the vulnerability by properly sanitizing metadata inputs and switching the active UI rendering endpoints to safe DOM interfaces.

In scenarios where upgrading the package is not immediately possible, applications can implement a Content Security Policy (CSP) that restricts script execution. Specifically, removing the 'unsafe-inline' directive from the script-src policy will prevent the browser from executing event handlers injected through the attribute breakout. Alternatively, applying post-rendering sanitization using a library like DOMPurify on the HTML generated by the editor can act as an effective secondary line of defense.

Fix Analysis (1)

Technical Appendix

CVSS Score
6.1/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N

Affected Systems

md-editor-v3 package for Vue 3Applications rendering untrusted Markdown using MdPreview or MdEditor in md-editor-v3

Affected Versions Detail

Product
Affected Versions
Fixed Version
md-editor-v3
imzbf
< 6.5.46.5.4
AttributeDetail
CWE IDCWE-79
Attack VectorNetwork (AV:N)
CVSS Score6.1 (Medium)
Exploit StatusPoC / Theoretical
KEV StatusNot Listed
ImpactClient-side Script Execution / Session Hijacking

MITRE ATT&CK Mapping

T1189Drive-by Compromise
Initial Access
T1185Browser Session Hijacking
Collection
CWE-79
Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

The software does not neutralize or incorrectly neutralizes user-controlled input before it is placed in output that is used as a web page that is served to other users.

Vulnerability Timeline

Fix Commit 2c07360420e74087f5bc63032ab155d93e0a0b10 Pushed
2026-07-17
Release v6.5.4 Published
2026-07-17
GitHub Security Advisory GHSA-3rm2-h79c-8qw6 Disclosed
2026-09-18

References & Sources

  • [1]NVD Record for CVE-2026-84992
  • [2]CVE.org Authority Record
  • [3]GitHub Security Advisory GHSA-3rm2-h79c-8qw6
  • [4]Patch Commit
  • [5]Release v6.5.4 Changelog

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•13 minutes ago•CVE-2026-63406
5.9

CVE-2026-63406: Information Disclosure via Insecure Telemetry and Hardcoded Credentials in AnyCable-Go

CVE-2026-63406 is an information disclosure vulnerability in AnyCable-go prior to version 1.6.15. The built-in telemetry client is enabled by default with a hardcoded public authentication token ('secret'). This client digests highly sensitive configuration parameters and command-line arguments, including JWT secrets and RPC secrets, into a stable SHA-256 fingerprint. This fingerprint is sent over public networks, exposing those administrative secrets to offline dictionary and brute-force attacks if intercepted.

Alon Barad
Alon Barad
0 views•5 min read
•about 2 hours ago•CVE-2026-81505
7.1

CVE-2026-81505: Broken Object Level Authorization (BOLA) in Convoy Webhook Source Retrieval

CVE-2026-81505 is a high-severity Broken Object Level Authorization (BOLA) / Insecure Direct Object Reference (IDOR) vulnerability in Convoy, a cloud-native webhooks gateway. In affected versions prior to 26.6.8, the single-item Source retrieval API endpoint authorizes project access but fails to confirm if the requested Source belongs to that specific project. This logical flaw allows authenticated users or project-scoped API key holders to bypass tenant isolation boundaries and retrieve unredacted, plaintext message broker credentials for Apache Kafka, Amazon SQS, RabbitMQ, and Google Cloud Pub/Sub belonging to other tenants. This issue is fully patched in version 26.6.8.

Amit Schendel
Amit Schendel
7 views•5 min read
•about 3 hours ago•CVE-2026-77339
5.1

CVE-2026-77339: Unauthenticated Remote Command Execution in Process Compose via DNS Rebinding

CVE-2026-77339 is a critical security vulnerability in Process Compose before version 1.120.0. The Model Context Protocol (MCP) Server-Sent Events (SSE) listener transport subsystem fails to validate the HTTP Host and Origin headers, and does not enforce authentication. This omissions expose local loopback listeners to DNS rebinding attacks orchestrated by malicious remote websites visited by developers, enabling unauthorized process control and arbitrary command execution.

Alon Barad
Alon Barad
7 views•6 min read
•about 4 hours ago•CVE-2026-77301
7.5

CVE-2026-77301: Uncontrolled Resource Allocation (Decompression Bomb) in adm-zip

CVE-2026-77301 is a critical uncontrolled resource allocation vulnerability in the popular Node.js library adm-zip (versions prior to 0.6.1). During ZIP decompression of asynchronous entries, the library trusts the uncompressed size metadata declared in the central directory headers. Because Node.js's streaming zlib API completely ignores the maxOutputLength configuration, a crafted ZIP archive (decompression bomb) causes the application to continually allocate resident memory buffers on the heap without limits, causing rapid memory exhaustion and a process-level Out-of-Memory (OOM) crash.

Alon Barad
Alon Barad
6 views•5 min read
•about 5 hours ago•CVE-2026-91127
8.2

CVE-2026-91127: DOM Cross-Site Scripting via Unsafe Hyperlink Schemes in Flyfish File Viewer Legacy DOC Renderer

This report details CVE-2026-91127 (GHSA-3753-m2x2-q623), a high-severity DOM Cross-Site Scripting (DOM XSS) vulnerability in the file-viewer workspace developed by flyfish-dev. The legacy Word document (.doc) parser fails to restrict hyperlink URI schemes when rendering extracted document targets into generated HTML. As a result, a remote attacker can construct a malicious legacy DOC file containing scripts inside hyperlink properties. When a user previews the file and clicks the hyperlink, arbitrary JavaScript executes in the context of the hosting origin, enabling session hijacking, credential theft, or unauthorized API interaction.

Amit Schendel
Amit Schendel
5 views•7 min read
•about 6 hours ago•CVE-2026-63458
7.1

CVE-2026-63458: Broken Object Level Authorization (BOLA) and Tenant Isolation Bypass in Perses

An authorization bypass and tenant isolation vulnerability in Perses prior to version 0.54.0-beta.3 allows authenticated viewers to access unauthorized project resources by manipulating query parameters or querying unmapped ephemeral endpoints.

Amit Schendel
Amit Schendel
7 views•6 min read