CVE-2026-111759: markdown-it: Quadratic complexity in smartquotes with unmatched closing quotes

Published Oct 19, 2026
·
Updated

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:perfhooks'

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

Other sources

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.

— Ubuntu

Affected Software

8 affected componentsFixes available
npm/markdown-it<14.3.2, >=15.0.0<15.0.2
npm/markdown-it<14.3.2
14.3.2
npm/markdown-it>=15.0.0<15.0.2
15.0.2
ubuntu/node-markdown-it*
ubuntu/node-markdown-it*
ubuntu/node-markdown-it*
ubuntu/node-markdown-it*
debian/node-markdown-it<=22.2.3+dfsg+~12.2.3-2, <=22.2.3+dfsg+~12.2.3-5

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade npm/markdown-it to a version that resolves this vulnerability.

    Fixed in 14.3.2
  2. Upgrade

    Upgrade npm/markdown-it to a version that resolves this vulnerability.

    Fixed in 15.0.2
  3. Upgrade

    Upgrade markdown-it to a version that resolves this vulnerability.

    Fixed in 14.3.2
  4. Upgrade

    Upgrade markdown-it to a version that resolves this vulnerability.

    Fixed in 15.0.2
  5. Configuration

    Disable typography by setting typographer: false; alternatively, disable the smartquotes rule with md.disable('smartquotes').

    markdown-it typographer = false

Event History

Oct 19, 2026
CVE Published
via Ubuntu·12:00 AM
Data Sourced
via Ubuntu·12:00 AM
RemedyDescriptionSeverityAffected Software
CVE Published
via MITRE·05:39 PM
Data Sourced
via MITRE·05:39 PM
DescriptionSeverityWeakness
Data Sourced
via NVD·06:17 PM
DescriptionSeverityWeakness
Data Sourced
via OSV·06:17 PM
DescriptionSeverityAffected Software
Oct 20, 2026
Advisory Published
via GitHub·02:34 PM
Data Sourced
via GitHub·02:34 PM
DescriptionSeverityWeaknessAffected Software

Frequently Asked Questions

1

Which deployments are exposed to this denial-of-service condition?

Deployments using markdown-it versions before 14.3.2 or 15.0.2 are exposed only when typographer mode is enabled. The affected processing is in the smartquotes rule.

2

What input is required to trigger the excessive parsing time?

An attacker needs to supply Markdown containing many opening quotes of one quote type followed by unmatched closing quotes of the other type. No privileges or user interaction are required according to the supplied severity vector.

3

What can be done if an immediate upgrade is not possible?

Disable typographer mode or disable the smartquotes rule. Either change prevents the vulnerable processing path.

4

Which versions contain the fix?

The issue is fixed in markdown-it 14.3.2 and 15.0.2.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203