CVE-2026-54703
MediumCVSS 5.8Exploitation Probability (EPSS)
Low risk11th percentile - higher than 11% of all known CVEs
Summary
In Markdown Preview Enhanced prior to 0.8.30, the _crossnote.updateMarkdown command accepts an arbitrary URI and attacker-controlled content, then passes them to vscode.workspace.fs.writeFile without validating that the target is the Markdown file represented by the current preview. JavaScript already executing in the preview webview can invoke this command through the extension message bridge and write any file permitted by the VS Code user's operating-system privileges.
Risk Assessment
An attacker can overwrite user configuration, startup, source, and build files, potentially leading to code execution or persistent damage to the development environment.
Recommendation
Update Markdown Preview Enhanced to version 0.8.30 or later and avoid opening untrusted repositories in VS Code.
Other vulnerabilities in Markdown Preview Enhanced
See all- CVE-2026-54702High
Markdown Preview Enhanced, a Markdown preview extension for Visual Studio Code, prior to 0.8.30 does not validate the command value or arguments sent from the webview. JavaScript running in the preview can invoke privileged extension commands, including file modification, code execution, export-tool execution, and arbitrary URL opening. Exploitation requires a separate webview JavaScript execution path, such as the .crossnote/head.html injection.
- CVE-2026-54701Medium
In Markdown Preview Enhanced prior to 0.8.30, the extension reads repository-controlled .crossnote/head.html content and passes it through resolvePathsInHeader before inserting it into the head of the preview webview document without removing executable content. Script-capable markup executes while the document loads, before the React application and DOMPurify initialize, and can access acquireVsCodeApi.
- CVE-2026-54566High
Markdown Preview Enhanced, a Markdown preview extension for Visual Studio Code, prior to 0.8.29 evaluates repository-controlled .crossnote/config.js and .crossnote/parser.js files with vm.runInNewContext, which does not provide a security boundary from the Node.js host realm. Opening a Markdown file in a malicious repository automatically loads these files, and prototype-chain traversal can reach the host Function constructor and process object, allowing OS command execution as the victim account without further interaction.
- CVE-2026-54525High
Markdown Preview Enhanced, a Markdown preview extension for Visual Studio Code, prior to 0.8.28 passes a decoded, Markdown-controlled link target to a Windows file-opening helper that invokes child_process.exec with the start command. When a Windows user opens an untrusted Markdown file and clicks a crafted link, shell metacharacters in the decoded target are interpreted by cmd.exe as command separators, allowing an attacker-selected command to run with the privileges of the current VS Code user.
- CVE-2026-11422High
Markdown Preview Enhanced 0.8.x with crossnote engine 0.9.28 has a code injection vulnerability in the WaveDrom rendering pipeline. Attackers can embed malicious content in a wavedrom fenced code block, leading to arbitrary JavaScript execution in the VS Code webview context and arbitrary file writes on the local filesystem.
Original NVD description (English source)
Markdown Preview Enhanced is a Markdown preview extension for Visual Studio Code. Prior to 0.8.30, the _crossnote.updateMarkdown command in Markdown Preview Enhanced accepts an arbitrary URI and attacker-controlled content, then passes them to vscode.workspace.fs.writeFile without validating that the target is the Markdown file represented by the current preview. JavaScript already executing in the preview webview can invoke this command through the extension message bridge and write any file permitted by the VS Code user's operating-system privileges, including user configuration, startup, source, and build files. This file-write vulnerability requires a separate webview JavaScript execution path, such as the independently tracked head.html injection and blind command-dispatch weaknesses. This issue is fixed in version 0.8.30.
Vulnerability data from NVD (NIST) · CISA KEV · EPSS

