markdown-it: Quadratische Komplexität in smartquotes bei nicht übereinstimmenden schließenden Anführungszeichen
Auswirkungen
Wenn typographer: true aktiviert ist, kann speziell gestaltetes Markdown zu einer quadratischen Verarbeitungszeit in der smartquotes-Regel führen. Dies kann potenziell einen Denial-of-Service (DoS) in Anwendungen verursachen, die nicht vertrauenswürdige Eingaben verarbeiten.
Viele öffnende doppelte Anführungszeichen gefolgt von nicht übereinstimmenden schließenden einfachen Anführungszeichen führen zu wiederholten Durchläufen des gesamten Öffner-Stacks. Dasselbe Problem tritt auf, wenn die Typen der Anführungszeichen vertauscht sind.
Die Standardkonfiguration (typographer: false) ist nicht betroffen, diese Option wird jedoch mit hoher Wahrscheinlichkeit aktiviert.
Reproduktion
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')
}
Ergebnis:
| input size | time |
|---|---|
| 12000 | 18ms |
| 24000 | 47ms |
| 48000 | 115ms |
| 96000 | 428ms |
| 192000 | 1586ms |
Patches
Behoben in 15.0.2 und 14.3.2.
Problemumgehungen
Deaktivieren Sie Typografie mit typographer: false oder deaktivieren Sie ausschließlich die smartquotes-Regel:
md.disable('smartquotes')
Was zu tun ist
Aktualisieren Sie auf 15.0.2, 14.3.2 oder neuere Versionen. Falls ein Update nicht sofort möglich ist, deaktivieren Sie die Typografie über typographer: false oder deaktivieren Sie die smartquotes-Regel wie in der Problemumgehung beschrieben.
Betroffene Software
Klicken Sie auf eine Technologie, um alle zugehörigen Schwachstellen anzuzeigen.
| Plattform | Paket | Anfällige Versionen | Behoben in |
|---|---|---|---|
| npm-Paket | markdown-it | >= 15.0.0, < 15.0.2, < 14.3.2 | 15.0.2, 14.3.2 |
Verweise
- https://github.com/markdown-it/markdown-it/security/advisories/GHSA-r7fv-28h4-cvq7
- https://nvd.nist.gov/vuln/detail/CVE-2026-111759
- https://github.com/markdown-it/markdown-it/commit/1b379c1b6d0522421bd1a51b77337c79af2c8670
- https://github.com/markdown-it/markdown-it/commit/cf27366035edf9196667110c47d9d67b030a4152
- https://github.com/markdown-it/markdown-it/commit/daf5a3c32303e5d9de01b12eeb725fb5990b8162
- https://github.com/markdown-it/markdown-it
- https://github.com/markdown-it/markdown-it/releases/tag/14.3.2
- https://github.com/markdown-it/markdown-it/releases/tag/15.0.2
- CVSS-Vektor
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H- Schwäche (CWE)
CWE-400, CWE-407- Plattform
- npm
- Paket
markdown-it- Veröffentlicht
- 20.10.2026
- Aktualisiert
- 20.10.2026 18:18
Quellen und Lizenzen · Von DockRay bearbeitet oder übersetzt; Rechte und Lizenzen der Quellen bleiben erhalten.
OSV / GitHub Advisory Database - GHSA-r7fv-28h4-cvq7 - CC BY 4.0
Schwachstellenhistorie: markdown-it
Alle veröffentlichten Schwachstellen dieses Pakets (npm-Paket), neueste zuerst. Zeigt, ob es ein einmaliger Ausrutscher ist oder ein Paket, das man im Auge behalten muss.
- Einträge insgesamt
- 8
- Erste → letzte
- 01.2022 10.2026
- Ohne Fix
- 0
- In Angriffen ausgenutzt
- 0
Verteilung nach Schweregrad
- Hoch 3
- Mittel 4
- Niedrig 1
Veröffentlichungen pro Jahr
- 2022: 2
- 2023: 0
- 2024: 0
- 2025: 0
- 2026: 6
-
markdown-it: Quadratische Komplexität in smartquotes bei nicht übereinstimmenden schließenden Anführungszeichen dieser Eintrag
Erkennen Sie Schwachstellen in Ihrer Anwendung
Mit der DockRay-Integration und aktivierter Softwareinventarisierung prüft DockRay gemeldete Komponentenversionen auf bekannte Schwachstellen und benachrichtigt Sie über bestätigte Treffer. Die Abdeckung hängt von der unterstützten Technologie und den verfügbaren Meldungen ab.