GHSA-r7fv-28h4-cvq7

    Dashboard / Vulnerabilities / GHSA-r7fv-28h4-cvq7

    GHSA-r7fv-28h4-cvq7

    Published: 20 Oct 2026Last Modified: 20 Oct 2026

    Summary: markdown-it: Quadratic complexity in smartquotes with unmatched closing quotes

    Details: ### 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') ```

    Affected packages

    Package

    Name: markdown-it

    Purl: pkg:npm/markdown-it

    Affected ranges

    Type: SEMVER

    Events:

    Introduced- 15.0.0
    Fixed -15.0.2

    Affected versions

    Common Vulnerability Scoring System

    Attack Vector
    Network
    Adjacent
    Local
    Physical
    Privileges Required
    None
    Low
    High
    User Interaction
    None
    Required
    Scope
    Unchanged
    Changed
    Confidentiality
    None
    Low
    High
    Integrity
    None
    Low
    High
    Availability
    None
    Low
    High
    GHSA-r7fv-28h4-cvq7 | CVE-DB