markdown-it: Quadratic complexity in smartquotes with unmatched closing quotes
### Impact 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. ### Reproduction ```js import MarkdownIt from 'markdown-it' import { performance } from 'node:perf_hooks' const md = new MarkdownIt({ typographer: true }) for (const k of [2000, 4000, 8000, 16000, 32000]) { const input = '"a '.repeat(k) + "b' ".repeat(k) const start = performance.now() md.render(input) console.log(input.length, (performance.now() - start).toFixed(1), 'ms') } ``` Result: |input size|time| |-|-| |12000|18ms| |24000|47ms| |48000|115ms| |96000|428ms| |192000|1586ms| ### Patches Fixed in **15.0.2** and **14.3.2**. ### Workarounds Disable typography with `typographer: false`, or disable only the smartquotes rule: ```js md.disable('smartquotes') ```
describes (1)
Related CVEs.
| ID | severity | exploitable | ||
|---|---|---|---|---|
| CVE-2026-111759US | — | — | ||
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 r… | ||||
references
External citations — patches, advisories, analysis.
- https://github.com/markdown-it/markdown-itPACKAGE
- https://github.com/markdown-it/markdown-it/commit/1b379c1b6d0522421bd1a51b77337c79af2c8670WEB
- https://github.com/markdown-it/markdown-it/commit/cf27366035edf9196667110c47d9d67b030a4152WEB
- https://github.com/markdown-it/markdown-it/commit/daf5a3c32303e5d9de01b12eeb725fb5990b8162WEB
- https://github.com/markdown-it/markdown-it/releases/tag/14.3.2WEB
- https://github.com/markdown-it/markdown-it/releases/tag/15.0.2WEB
- https://github.com/markdown-it/markdown-it/security/advisories/GHSA-r7fv-28h4-cvq7WEB
- https://nvd.nist.gov/vuln/detail/CVE-2026-111759ADVISORY
Advisories like this name the exposed products attackers go after on your perimeter. See what is exposed on your perimeter with a free passive scan.
Free scan