Skip to main content

markdown-it CVE-2026-111766

| EUVDEUVD-2026-104595 LOW
Uncontrolled Resource Consumption (CWE-400)
2026-10-19 GitHub_M GHSA-vfgh-jcmw-g37q
3.7
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Submit crafted Markdown to rendering endpoint
  2. Delivery
    Repeated unterminated HTML comments/PIs/CDATA in paragraph
  3. Exploit
    HTML_TAG_RE rescans overlapping suffix quadratically
  4. Execution
    Event loop or browser main thread blocked
  5. Impact
    Service 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.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
Patch available 0.4% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – 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

markdown-it 15.0.0, < 15.0.3
markdown-it < 14.3.3

Affected Packages

npm markdown-it fix: 14.3.3, 15.0.3

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

Vendor (GitHub_M) PRIMARY 3.7 LOW
AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L
vuln.today AI 3.7 LOW

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).

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L
4.0 AV:N/AC:H/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
High
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
Low

Lifecycle Timeline

2
Patch available
Oct 19, 2026 - 21:17 EUVD
CVE Published
Oct 19, 2026 - 19:47 cve.org
LOW 3.7

DescriptionCVE.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
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 37 npm packages depend on markdown-it (21 direct, 17 indirect)

Ecosystem-wide dependent count for version 15.0.0.

Threat Intelligence Overview

EPSS Score
0.4%
Top 73% exploitable
Prevalence
High
extremely popular JavaScript/npm Markdown parser used across countless web apps
Threat Intel
1
1 source
Data Quality
6 sources
Confidence: High

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 LOW
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.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· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
High

Priority Score

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

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

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