Skip to main content

Showdown CVE-2026-104477

| EUVDEUVD-2026-91853 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-10-03 disclosure@vulncheck.com GHSA-gc85-xrjc-cv75
5.3
CVSS 4.0 · Vendor: vulncheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Submit crafted markdown link or image
  2. Delivery
    Showdown renders unescaped double quote into href/src
  3. Exploit
    Attribute breaks out, injecting event handler
  4. Execution
    Victim views page and handler fires
  5. Impact
    Execute arbitrary script in victim's browser

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

The application must use Showdown (versions through 2.1.0) to render attacker-influenced markdown into HTML and display it to other users WITHOUT secondary output sanitization (e.g., no DOMPurify pass). The concrete trigger is a markdown link or image whose destination URL contains a double quote followed by an event handler (onerror for images, onmouseover for links), which escapes the quoted href/src attribute. LIMITING FACTORS: the victim must view the rendered output (UI:P) - onerror on a broken image fires automatically on load, while onmouseover requires the victim to hover; and per the patch's own code comments, CommonMark-spec ('cmSpec') flavors already percent-encode URLs and are therefore NOT affected, so only default/non-cmSpec flavors are exploitable.

Impact

This is a medium-severity stored/reflected cross-site scripting flaw (CWE-79) with a provided CVSS 4.0 base score of 5.3. The 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:P) shows network-reachable, low-complexity, no-privilege exploitation, but it is gated by passive user interaction (a victim must view the rendered HTML) and the impact metrics are only Low (VC:L/VI:L/VA:N) - consistent with client-side script execution in the victim's browser rather than server or host compromise. There is NO CISA KEV listing (not actively exploited) and NO EPSS score was provided in the input, so exploitation-probability data is MISSING and cannot be weighed. No standalone public exploit is identified, although the vendor patch commit (4fb992cd) ships regression tests containing working attribute-injection payloads, which materially lowers the bar for weaponization. Real-world priority is moderate and highly deployment-dependent: Showdown is a popular library, but exploitation only matters where the application renders attacker-influenced markdown and does NOT apply secondary output sanitization (e.g., DOMPurify). A key mitigating signal from the patch's own code comments is that CommonMark-spec ('cmSpec') flavors already percent-encode URLs and are therefore unaffected - so default/non-cmSpec configurations are the real exposure. Net: a genuine but not high-urgency issue; patch on a normal cycle unless rendering untrusted markdown without downstream sanitization.

Exploit ScenarioDerived

An attacker submits markdown content (e.g., a comment, profile field, or document) containing a link or image whose URL embeds a double quote plus an event handler, such as ![a](<x" onerror=alert(1) src=y>). When Showdown converts it to HTML the unescaped quote breaks out of the src/href attribute, and when another user views the rendered page the injected onerror/onmouseover handler executes arbitrary JavaScript in that victim's browser session. No standalone public exploit is identified, but the fix commit includes test cases demonstrating functional payloads.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
No patch listed yet 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 03, 2026

Cross-site scripting in Showdown through 2.1.0 allows an attacker to break out of the href and src attributes of rendered markdown links and images by placing a double quote in the destination URL followed by an event handler such as onerror or onmouseover. The makehtml.link and makehtml.image subparsers concatenate the unescaped URL directly into quoted attributes, so the injected handler executes in the victim's browser when the rendered HTML is displayed. The flaw is unauthenticated from the attacker's side (CVSS 4.0 vector PR:N) but requires the victim to view the rendered output (UI:P); it is only exploitable when the host application renders attacker-influenced markdown without a secondary output sanitizer, and per the upstream patch comments the CommonMark-spec (cmSpec) flavors percent-encode URLs and are not affected. No KEV, EPSS, or active-exploitation telemetry was supplied with this report, and no public exploit identified at time of analysis, although the upstream fix commit includes regression test cases containing the exact injection payloads.

RemediationAI

Upstream fix available (PR/commit); released patched version not independently confirmed. Apply the fix in commit 4fb992cd26631c108ec0410342630c80207ec7c6 (https://github.com/showdownjs/showdown/commit/4fb992cd26631c108ec0410342630c80207ec7c6), which escapes ", <, and > in the destination URL of makehtml.link and makehtml.image before it is placed into href/src; upgrade to a Showdown build that contains this commit once a tagged release carrying it is published, since no exact fixed release number is stated in the available data. If upgrading is not immediately possible, sanitize the output of every conversion with a context-aware HTML sanitizer such as DOMPurify before inserting it into the DOM - the trade-off is that an over-broad configuration can strip legitimate markup such as links, images, or embedded HTML the application intends to allow, so allowlists must be tuned and tested. Alternatively, avoid rendering attacker-influenced Markdown to other users, or pre-escape double quotes and angle brackets in link/image destinations in the Markdown input before conversion; note that naive input filtering is fragile because of alternate encodings and is a stopgap rather than a fix. Switching the converter to a cmSpec flavor eliminates the vulnerable code path because URLs are percent-encoded, but this changes parsing semantics and may visibly alter how existing documents render. Do not rely on client-side input validation alone, and reference the vendor advisory at https://www.vulncheck.com/advisories/showdown-through-2.1.0-xss-via-unescaped-quote-in-href-and-src-attributes for tracking.

Affected VersionsENISA

Showdown 0 ≤2.1.0

Affected Packages

euvd showdown no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Showdown is a JavaScript Markdown-to-HTML converter that has been widely embedded in browser applications, editors, comment systems, and documentation viewers to render user-authored Markdown. Internally it processes documents through a set of subparsers; the makehtml.link and makehtml.image subparsers are responsible for turning Markdown link and image syntax into <a href="..."> and <img src="..." alt="..."> output. In versions through 2.1.0 those subparsers interpolated the destination URL into the quoted attribute without escaping the double-quote character, producing a classic attribute-injection weakness (CWE-79, improper neutralization of input during web page generation). A payload of the form [hi](<x" onmouseover=alert(1) a=">) or ![a](<x" onerror=alert(1) src=y>) terminates the attribute early and introduces a new event-handler attribute in the generated markup. The upstream fix commit 4fb992cd26631c108ec0410342630c80207ec7c6 adds HTML-entity escaping of ", <, and > in both subparsers immediately before the URL is written into href/src, and its own code comments note this is a no-op for cmSpec flavors because those already percent-encode the URL earlier in the pipeline. The reported CVSS 4.0 score is 5.3 (AV:N/AC:L/AT:N/PR:N/UI:P/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N); the independent assessment maps this to CVSS 3.1 AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N, i.e. a network-reachable, low-complexity, unauthenticated XSS requiring user interaction, with changed scope because script executes in the context of the host page.

Know when JavaScript gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (vulncheck) PRIMARY 5.3 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N
vuln.today AI 6.1 MEDIUM

Attacker supplies markdown content so PR:N; victim must render/view it (UI:R); script escaping the renderer into the browser DOM is a scope change (S:C) with limited C/I and no availability impact.

3.1 AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:P/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N
Red Hat 6.1 MEDIUM

Primary rating from Vendor (vulncheck).

CVSS VectorVendor: vulncheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
Passive
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
Low
Vulnerable system: Availability
None
Subsequent system: Confidentiality
Low
Subsequent system: Integrity
Low
Subsequent system: Availability
None

DescriptionCVE.org

Showdown through 2.1.0 contains a cross-site scripting vulnerability in the makehtml link and image subparsers, which fail to escape double quotes in destination URLs placed into href and src attributes. Attackers can craft markdown links or images containing a double quote followed by onerror or onmouseover handlers to execute script when victims view rendered HTML.

Threat Intelligence Overview

EPSS Score
0.2%
Top 92% exploitable
Prevalence
Medium
popular JavaScript markdown-to-HTML library, common but not ubiquitous
Social Media
1
Sightings
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment Vendor CIRCL GitHub

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available No
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

26
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +26
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

CVE-2026-102827 CRITICAL POC
9.8 Sep 29

Command injection in simple-git, the Node.js library for running git commands and published on npm, affects all releases

CVE-2026-77615 HIGH POC
8.7 Sep 17

Stored DOM-based cross-site scripting in Paella Player's closed-caption rendering path (paella-core before 2.12.11) allo

CVE-2026-92776 HIGH POC
8.6 Sep 16

Authorization bypass in Wiki.js through 2.5.314 allows an authenticated user who has been granted access to at least one

CVE-2026-102826 HIGH POC
8.1 Sep 29

Untrusted git configuration includes reachable through simple-git before 4.0.0 let an attacker execute arbitrary command

CVE-2026-85715 HIGH POC
7.5 Sep 17

Improper memory allocation control in ExifReader before 4.41.1 allows remote attackers to exhaust heap memory and termin

CVE-2026-102278 HIGH POC
7.5 Sep 28

Deeply nested brace patterns cause unbounded recursion in the npm brace-expansion library, exhausting the native stack a

CVE-2026-102276 HIGH POC
7.5 Sep 28

Stack exhaustion in the npm library brace-expansion (all versions prior to 1.1.19, 2.1.5, 3.0.7, and 5.0.10) lets a craf

CVE-2026-92775 HIGH POC
7.1 Sep 16

Server-side request forgery in Wiki.js through 2.5.314 lets an authenticated user who holds page-editing permissions for

CVE-2026-101910 MEDIUM POC
6.9 Sep 28

The JavaScript library ip-address (npm) fails to treat the NAT64 local-use prefix 64:ff9b:1::/48 as private, so applicat

CVE-2026-101914 MEDIUM POC
6.5 Sep 28

Authorization bypass in the @grpc/grpc-js-xds package (the xDS/RBAC extension for @grpc/grpc-js) lets a request for one

CVE-2026-101912 MEDIUM POC
6.3 Sep 28

Cross-family subnet comparisons in the ip-address npm library (all versions before 10.7.1) can cause isInSubnet and isHo

CVE-2026-101911 MEDIUM POC
6.3 Sep 28

Denial of service in the ip-address JavaScript/npm library (all versions prior to 10.7.1) lets remote attackers stall or

Vendor StatusVendor

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy