Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSubmit crafted Markdown to renderer
-
ExploitTrigger quadratic smartquotes stack rescans
-
ImpactExhaust CPU and deny 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 | Requires the consuming application to configure markdown-it with typographer: true (the smartquotes typographic replacement feature), which is NOT the default (default typographer: false is unaffected) - the advisory notes this option is nonetheless commonly enabled. The application must also pass attacker-controlled/untrusted Markdown into the parser. The specific trigger is input containing many opening double quotes followed by unmatched closing single quotes (or the same with quote types reversed), which forces repeated scans of the entire opener stack (quadratic time). Limiting factors: non-default configuration required, impact is availability/CPU exhaustion only (no code execution or data exposure), and affected versions are those prior to 14.3.2 and 15.0.2. |
| Impact | This is a CWE-400 uncontrolled resource consumption (algorithmic complexity) flaw in markdown-it's smartquotes rule. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, base 7.5 HIGH) is availability-only - no confidentiality or integrity impact - reflecting a denial-of-service, not RCE or data exposure. The network vector and lack of required privileges or user interaction are plausible because markdown-it is typically invoked server-side on user-submitted content, so an unauthenticated remote user can supply the malicious Markdown. However, a critical caveat tempers the PR:N/AC:L reading: exploitation is gated on the application running with typographer: true, which is NOT the default (typographer: false). This is a deployment precondition rather than an attack complexity factor, so it does not lower the CVSS AC, but defenders must verify their own configuration. No EPSS score, SSVC decision, KEV listing, or explicit POC flag was provided in the input. The commit evidence includes a pathological test case ('"a '.repeat(100000) + "b' ".repeat(100000)) that demonstrates the trigger, so a working trigger pattern is effectively public via the upstream fix, but there is no indication of active exploitation. Net: a genuine, easily-triggered DoS against affected configurations, but availability-only and config-dependent - a real priority for services that parse untrusted Markdown with typographer enabled, lower priority for default deployments. |
| Exploit ScenarioDerived | An application (e.g., a comment system, wiki, or chat renderer) uses markdown-it with typographer: true to render user-submitted content. A remote unauthenticated attacker posts a message containing many opening double quotes followed by unmatched closing single quotes, forcing the smartquotes rule into repeated full scans of the opener stack. The quadratic processing time pins a CPU core and stalls or hangs the request, and repeated submissions can exhaust server resources. The upstream pathological test demonstrates the exact trigger pattern. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 19, 2026
Algorithmic complexity (quadratic-time) denial of service in markdown-it's smartquotes typographic rule affects releases prior to 14.3.2 and 15.0.2 when the parser is configured with typographer: true. Unauthenticated remote attackers who can submit Markdown for rendering - for example in comment fields, chat messages, or wiki pages - can supply a document containing many opening double quotes followed by unmatched closing single quotes (or the same pattern with quote types reversed), forcing the smartquotes matching loop to rescan the entire opener stack on every quote and driving CPU consumption up quadratically with input size. The default typographer: false configuration is unaffected, and the impact is limited to availability (CVSS 3.1: AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, 7.5); no public exploit code was identified at time of analysis and the issue is not confirmed actively exploited (CISA KEV), though the advisory notes the vulnerable option is enabled with high probability in real deployments.
RemediationAI
Vendor-released patch: upgrade markdown-it to 14.3.2 or 15.0.2 (or later) - release notes at https://github.com/markdown-it/markdown-it/releases/tag/14.3.2 and https://github.com/markdown-it/markdown-it/releases/tag/15.0.2, advisory at https://github.com/markdown-it/markdown-it/security/advisories/GHSA-r7fv-28h4-cvq7; the underlying fixes are the commits 1b379c1b6d0522421bd1a51b77337c79af2c8670, cf27366035edf9196667110c47d9d67b030a4152 and daf5a3c32303e5d9de01b12eeb725fb5990b8162. Because markdown-it is frequently a transitive dependency, regenerate lockfiles and audit the resolved version rather than only the top-level manifest. If an immediate upgrade is not possible, the most effective compensating control is to leave typographer at its default false, or - where typographic output is still wanted - disable only the affected rule with md.core.ruler.disable('smartquotes') while keeping typographer: true; the trade-off is loss of curly-quote substitution in rendered output, which is cosmetic. As a secondary layer, cap accepted Markdown input length and quote density before parsing, apply per-request CPU timeouts or run rendering in a worker with a hard execution budget, and rate-limit endpoints that render untrusted user content; these reduce but do not eliminate the quadratic blow-up for sufficiently large payloads and add latency or false rejections for legitimate long documents.
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 core rule chain includes a 'smartquotes' typographer rule that replaces straight quotes with locale-specific curly quotes after inline tokenization. The rule maintains a stack of candidate opening quotes across inline tokens; when a candidate closing quote was encountered, the original implementation rewound the stack with a linear backward scan (for j = stack.length - 1; j >= 0; j--) looking for a matching opener at the same nesting level and of the same quote type. Because that scan ran once per quote character and could traverse the full stack each time, an attacker who supplies many openers of one quote type followed by many unmatched closers of the other type (or the mirrored pattern) induces O(n²) work - a classic CWE-400 uncontrolled resource consumption / algorithmic complexity weakness with no memory-safety or injection component. The upstream fix replaces the linear rewind with a per-nesting-level index: a QuoteOpener record stores token, position, quote type, level and a prevSame link, and a heads Map tracks the most recent single- and double-quote opener index for each level. Lookup for a closing quote becomes a constant-time Map read (heads.get(thisLevel)?.[isSingle ? 'single' : 'double']), and a truncateStack(length) helper pops entries once, repairing the per-level head pointers as it goes. The commits also add a pathological-input regression test exercising '"a '.repeat(100000) + "b' ".repeat(100000) with typographer: true.
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:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Untrusted Markdown is parsed remotely without auth or interaction, and a short crafted input reliably causes quadratic CPU blowup; the typographer:true requirement is a deployment precondition, not attack complexity, and impact is availability-only.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
markdown-it is a Markdown parser. Prior to 14.3.2 and 15.0.2, when typographer: true is enabled, specially crafted Markdown can cause quadratic processing time in the smartquotes rule, potentially leading to denial of service in applications processing untrusted input. Many opening double quotes followed by unmatched closing single quotes cause repeated scans of the entire opener stack. The same issue occurs with the quote types reversed. The default configuration (typographer: false) is not affected, but this option is enabled with high probability. This issue is fixed in versions 14.3.2 and 15.0.2.
Blast Radius
ecosystem impact- 37 npm packages depend on markdown-it (21 direct, 17 indirect)
Ecosystem-wide dependent count for version 15.0.0.
Technical POC Analysis
CWE-400 (Uncontrolled Resource Consumption), mapped by the advisory additionally to CWE-407 (Inefficient Algorithmic Complexity): a quadratic-time (O(n^2)) algorithmic complexity flaw in markdown-it'…
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
markdown-it, the Markdown rendering library embedded in our comment, chat, and wiki features, contains a denial-of-service flaw that lets an unauthenticated visitor exhaust application server CPU with a single crafted message. Any internet-facing surface that renders user-submitted Markdown and has the library's typographic-quote option enabled is exposed, so public comment forms and collaboration tools could be degraded or taken offline for all users during an attack. No public exploit code has been identified and there is no confirmed active exploitation, making this an availability and resilience exposure rather than an active incident.
Apply vendor patch (markdown-it 14.3.2 or 15.0.2).
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
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).
Quadratic processing in markdown-it (prior to 14.3.3 and 15.0.3) allows attacker-controlled Markdown to block the event
EUVD-2026-104538
GHSA-r7fv-28h4-cvq7
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB