Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSubmit crafted Markdown to rendering endpoint
-
DeliveryRepeated unterminated HTML comments/PIs/CDATA in paragraph
-
ExploitHTML_TAG_RE rescans overlapping suffix quadratically
-
ExecutionEvent loop or browser main thread blocked
-
ImpactService unresponsive (denial of service)
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource consumption limits
MITRE ATT&CK
1 technique across 1 tactic: Impact The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires markdown-it to be instantiated with the 'html' option enabled OR the 'commonmark' preset active - this is a NON-DEFAULT configuration, as markdown-it ships with HTML parsing disabled, which is the primary limiting factor. The malicious constructs (repeated unterminated inline HTML comments '<!--', processing instructions '<?', declarations '<!A', or CDATA '<![CDATA[') must occur INSIDE a paragraph to reach src/rules_inline/html_inline.ts; HTML blocks are explicitly NOT affected. No authentication or user interaction is needed beyond getting attacker-controlled Markdown into the parser (CVSS PR:N/UI:N), so any app that renders untrusted Markdown with HTML enabled is exposed. The attack is high-complexity (AC:H) specifically because of the required non-default html/commonmark configuration. |
| Impact | This is a genuinely low-priority issue despite being a real, confirmed defect. All signals align downward rather than conflicting: the vendor-assigned CVSS is 3.7 (Low) with vector AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L - network-reachable and unauthenticated, but with high attack complexity and impact limited to availability only (CWE-400, quadratic processing). No confidentiality or integrity impact exists. No EPSS score was provided, so exploitation probability cannot be quantified from the input; the CVE is not in CISA KEV, and no standalone public exploit was supplied, though the fix commit (928bc8c1) ships pathological test payloads that concretely demonstrate the triggering input. The AC:H rating is well-justified: exploitation requires the non-default 'html' option or commonmark preset to be enabled, which materially shrinks the real-world attack surface since markdown-it ships with HTML disabled by default. The practical risk is a single-request event-loop stall / main-thread hang (self-inflicted DoS of the parsing worker or browser tab), not RCE, data theft, or worm-grade spread - appropriate to prioritize for patching on normal cadence rather than emergency response. |
| Exploit ScenarioDerived | An application that renders user-supplied Markdown with markdown-it configured with html:true (or the commonmark preset) accepts a comment, post, or document from an attacker. The attacker submits a paragraph containing hundreds of thousands of repeated unterminated inline HTML comments (e.g. '<!--' repeated) with no closing terminator; markdown-it's html_inline rule repeatedly rescans the overlapping suffix for a terminator, producing quadratic work that blocks the Node.js event loop or freezes the browser main thread. The fix commit's pathological tests demonstrate the exact payloads, but no weaponized standalone exploit was provided in the input. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 19, 2026
Quadratic processing in markdown-it (prior to 14.3.3 and 15.0.3) allows attacker-controlled Markdown to block the event loop or freeze a browser main thread when HTML parsing is enabled. Only deployments instantiated with the non-default 'html' option or the 'commonmark' preset are exposed; the shipped default disables inline HTML, and HTML blocks are unaffected - the payloads must sit inside a paragraph. Both a public advisory and upstream commits/patched releases exist, but no public exploit code and no confirmed active exploitation were identified at time of analysis, and EPSS data was not supplied; this is a low-priority defect whose severity is capped by the required non-default configuration.
RemediationAI
Vendor-released patch: upgrade to markdown-it 14.3.3 or 15.0.3 (https://github.com/markdown-it/markdown-it/releases/tag/14.3.3, https://github.com/markdown-it/markdown-it/releases/tag/15.0.3), which implement linear terminator scanning plus a per-state skipHtmlSpecial flag; the underlying fixes are commits 928bc8c11ded60181c0e7fc5aa954eec582e8e79 and d99f48839d37af6fd8a2617516c43dab90755503, and advisory GHSA-vfgh-jcmw-g37q is the reference. If upgrading is not immediately possible, the most effective control carries little trade-off: keep the html option disabled (the library default) and avoid the commonmark preset for untrusted input, since every affected payload family requires inline HTML parsing - this costs legitimate inline-HTML rendering in Markdown. Where inline HTML is genuinely required, sanitize or reject input containing '<!--', '<?', '<!A' and '<![CDATA[' sequences before parsing, or truncate input length and parse untrusted Markdown off the request path (Web Worker or server-side with strict time limits) so a stalled parse cannot freeze the UI thread; both add complexity and may still allow slowdowns, so patching remains preferred. Sanitizing rendered output after parsing does not mitigate this issue.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in npm
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
markdown-it is a JavaScript/TypeScript Markdown parser whose inline parsing pipeline processes raw HTML when html is enabled. The inline rule src/rules_inline/html_inline.ts used a single combined HTML_TAG_RE (defined in src/common/html_re.ts) to match open tags, close tags, comments, processing instructions ('<?...?>'), declarations ('<!A...>') and CDATA ('<![CDATA[...]]>') - a CWE-400 uncontrolled resource consumption pattern. Because the regex searched the remaining suffix for the corresponding terminator on every candidate opener, repeated unterminated constructs (e.g. '<!--' or '<?x' repeated hundreds of thousands of times) forced overlapping re-scans of the same input, yielding quadratic time complexity and event-loop blocking or an unresponsive browser main thread. The fix replaces the combined pattern with two paths: HTML_OPEN_CLOSE_TAG_RE for tags, and a new scanSpecial() helper that honors special cases ('<!-->' / '<!--->'), locates the first terminator via a linear indexOf, and sets a per-state skipHtmlSpecial flag so that after a single unterminated construct the remaining constructs in the same paragraph are treated as plain text (an accepted fidelity trade-off noted in code comments). The old HTML_TAG_RE is deprecated, and pathological regression tests were added for each construct family.
Know when Markdown It 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
AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L
Attacker-controlled Markdown is processed remotely (AV:N) with no auth or interaction (PR:N/UI:N), but the required non-default html/commonmark config makes it AC:H; only availability is affected (A:L).
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
markdown-it is a Markdown parser. Prior to 14.3.3 and 15.0.3, when the html option or commonmark preset is enabled and the constructs occur inside a paragraph, attacker-controlled Markdown containing repeated unterminated inline HTML comments, processing instructions, declarations, or CDATA sections reaches src/rules_inline/html_inline.ts. Its HTML_TAG_RE match searches the remaining suffix for the appropriate terminator; when no terminator is present, parsing advances to the next opener and repeats the match over overlapping input, causing quadratic processing and denial of service through event-loop blocking or an unresponsive browser main thread. HTML blocks and the default HTML-disabled configuration are not affected by these payloads. This issue is fixed in versions 14.3.3 and 15.0.3.
Blast Radius
ecosystem impact- 37 npm packages depend on markdown-it (21 direct, 17 indirect)
Ecosystem-wide dependent count for version 15.0.0.
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
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
More in Markdown It
View allDenial of service in linkify-it before 5.0.2 allows remote attackers to exhaust CPU by submitting crafted text containin
Improper Neutralization of Input During Web Page Generation (XSS or 'Cross-site Scripting') vulnerability in markdown-it
Denial of service in the markdown-it Markdown parser (npm package markdown-it) affects versions 14.1.0 through 14.3.2 an
Algorithmic complexity (quadratic-time) denial of service in markdown-it's smartquotes typographic rule affects releases
markdown-it before 4.1.0 does not block data: URLs. Rated medium severity (CVSS 5.3), this vulnerability is remotely exp
Markdown-It versions up to 14.1.1 is affected by inefficient regular expression complexity (redos) (CVSS 5.3).
EUVD-2026-104595
GHSA-vfgh-jcmw-g37q
NVD
CVE.org
EPSS
VulDB
Exploit-DB