CVE-2026-59710
Deferred Deferred - Pending Action

Stored XSS in Showdown Markdown Parser via Table Headers

Vulnerability report for CVE-2026-59710, including description, CVSS score, EPSS score, affected products, exploitability, helpful resources, and attack-flow context.

Publication date: 2026-07-06

Last updated on: 2026-07-07

Assigner: VulnCheck

Description

showdown contains a stored cross-site scripting vulnerability in the parseHeaders function of src/subParsers/makehtml/tables.js that fails to properly escape table header ID attributes. Attackers can inject arbitrary HTML and script-executing SVG elements through double-quote characters in markdown table headers, achieving stored XSS when untrusted markdown is rendered with the default github flavor configuration.

CVSS Scores

EPSS Scores

Probability:
Percentile:

Meta Information

Published
2026-07-06
Last Modified
2026-07-07
Generated
2026-07-27
AI Q&A
2026-07-07
EPSS Evaluated
2026-07-25
NVD
EUVD

Affected Vendors & Products

Showing 1 associated CPE
Vendor Product Version / Range
showdown showdown to 2.1.0 (inc)

Helpful Resources

Exploitability

CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-79 The product does not neutralize or incorrectly neutralizes user-controllable input before it is placed in output that is used as a web page that is served to other users.

Attack-Flow Graph

AI Quick Actions

Instant insights powered by AI
Executive Summary

This vulnerability exists in the showdown library, specifically in the parseHeaders function of the file src/subParsers/makehtml/tables.js. It is a stored cross-site scripting (XSS) vulnerability caused by the failure to properly escape table header ID attributes.

Attackers can exploit this by injecting arbitrary HTML and script-executing SVG elements through double-quote characters in markdown table headers. When untrusted markdown is rendered using the default github flavor configuration, this leads to stored XSS.

Detection Guidance

This vulnerability can be detected by identifying if your system uses the Showdown library version 2.1.0 or earlier, where the parseHeaders function in src/subParsers/makehtml/tables.js improperly escapes table header ID attributes.

Detection involves checking if untrusted markdown containing table headers with double-quote characters or other special characters is rendered using the default GitHub flavor configuration, which enables the vulnerable tablesHeaderId option.

You can search your codebase or dependencies for the Showdown version and inspect usage of markdown tables with potentially malicious headers.

  • Use command to check Showdown version in your project (if using npm): `npm list showdown`
  • Search for markdown table headers containing suspicious characters, e.g., using grep: `grep -r '\| ".*\|' ./path-to-markdown-files`
  • Test rendering of markdown tables with crafted headers such as `| "><svg/onload=alert(1)> | Col2` to see if scripts execute.
Impact Analysis

The vulnerability allows attackers to execute arbitrary scripts in the context of the affected application by injecting malicious code into markdown table headers.

This can lead to stored cross-site scripting attacks, which may result in unauthorized actions performed on behalf of users, theft of sensitive information such as cookies or session tokens, and potential compromise of user accounts.

Compliance Impact

CVE-2026-59710 is a stored cross-site scripting (XSS) vulnerability that allows attackers to inject and execute arbitrary scripts when untrusted markdown is rendered. Such vulnerabilities can lead to unauthorized access to user data, session hijacking, or other malicious activities.

From a compliance perspective, stored XSS vulnerabilities can impact adherence to standards like GDPR and HIPAA because they may lead to unauthorized disclosure or compromise of personal or sensitive information. Organizations using the vulnerable Showdown library without proper mitigation could be at risk of violating data protection requirements that mandate safeguarding user data against unauthorized access and ensuring application security.

Mitigations such as enabling safe modes, sanitizing input, or applying patches (as done in the fixed commit) are necessary to maintain compliance and reduce the risk of exploitation.

Mitigation Strategies

To mitigate this vulnerability immediately, upgrade the Showdown library to a version that includes the fix, which was applied in commit e5cab1e.

If upgrading is not immediately possible, consider disabling or avoiding the use of the tablesHeaderId option or the default GitHub flavor configuration that enables it.

Additionally, sanitize or validate markdown input from untrusted sources before rendering to prevent injection of malicious HTML or scripts.

Using Showdown's safeMode option or integrating a dedicated sanitizer like DOMPurify can help reduce the risk of XSS.

Chat Assistant

Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-59710. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70

EPSS Chart