Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSubmit crafted markdown link or image
-
DeliveryShowdown renders unescaped double quote into href/src
-
ExploitAttribute breaks out, injecting event handler
-
ExecutionVictim views page and handler fires
-
ImpactExecute 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  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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
Affected Packages
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  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
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
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.
Primary rating from Vendor (vulncheck).
CVSS VectorVendor: vulncheck
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
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
More in JavaScript
View allCommand injection in simple-git, the Node.js library for running git commands and published on npm, affects all releases
Stored DOM-based cross-site scripting in Paella Player's closed-caption rendering path (paella-core before 2.12.11) allo
Authorization bypass in Wiki.js through 2.5.314 allows an authenticated user who has been granted access to at least one
Untrusted git configuration includes reachable through simple-git before 4.0.0 let an attacker execute arbitrary command
Improper memory allocation control in ExifReader before 4.41.1 allows remote attackers to exhaust heap memory and termin
Deeply nested brace patterns cause unbounded recursion in the npm brace-expansion library, exhausting the native stack a
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
Server-side request forgery in Wiki.js through 2.5.314 lets an authenticated user who holds page-editing permissions for
The JavaScript library ip-address (npm) fails to treat the NAT64 local-use prefix 64:ff9b:1::/48 as private, so applicat
Authorization bypass in the @grpc/grpc-js-xds package (the xDS/RBAC extension for @grpc/grpc-js) lets a request for one
Cross-family subnet comparisons in the ip-address npm library (all versions before 10.7.1) can cause isInSubnet and isHo
Denial of service in the ip-address JavaScript/npm library (all versions prior to 10.7.1) lets remote attackers stall or
EUVD-2026-91853
GHSA-gc85-xrjc-cv75
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB