markdown-it: Complejidad cuadrática en smartquotes con comillas de cierre no coincidentes
Impacto
Cuando typographer: true está habilitado, Markdown especialmente diseñado puede causar un tiempo de procesamiento cuadrático en la regla smartquotes, lo que potencialmente conduce a una denegación de servicio en aplicaciones que procesan entradas no confiables.
Muchas comillas dobles de apertura seguidas de comillas simples de cierre no coincidentes provocan escaneos repetidos de toda la pila de aperturas. El mismo problema ocurre si se invierten los tipos de comillas.
La configuración predeterminada (typographer: false) no se ve afectada, pero existe una alta probabilidad de que esta opción esté habilitada.
Reproducción
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')
}
Resultado:
| input size | time |
|---|---|
| 12000 | 18ms |
| 24000 | 47ms |
| 48000 | 115ms |
| 96000 | 428ms |
| 192000 | 1586ms |
Parches
Corregido en 15.0.2 y 14.3.2.
Mitigaciones
Deshabilite la tipografía con typographer: false, o deshabilite únicamente la regla smartquotes:
md.disable('smartquotes')
Qué hacer
Actualice a 15.0.2, 14.3.2 o versiones posteriores. Si no es posible actualizar de inmediato, deshabilite la tipografía con typographer: false o desactive únicamente la regla smartquotes.
Software afectado
Haz clic en una tecnología para ver todas sus vulnerabilidades.
| Plataforma | Paquete | Versiones vulnerables | Corregida en |
|---|---|---|---|
| Paquete de npm | markdown-it | >= 15.0.0, < 15.0.2, < 14.3.2 | 15.0.2, 14.3.2 |
Referencias
- 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
- Vector CVSS
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H- Debilidad (CWE)
CWE-400, CWE-407- Plataforma
- npm
- Paquete
markdown-it- Publicada
- 20.10.2026
- Actualizado
- 20.10.2026 18:18
Fuentes y licencias · Editado o traducido por DockRay; se mantienen los derechos y las licencias de las fuentes.
OSV / GitHub Advisory Database - GHSA-r7fv-28h4-cvq7 - CC BY 4.0
Historial de vulnerabilidades: markdown-it
Todas las vulnerabilidades publicadas de este paquete (Paquete de npm), de la más reciente a la más antigua. Muestra si es un fallo aislado o un paquete que hay que vigilar.
- Entradas en total
- 8
- Primera → última
- 01.2022 10.2026
- Sin corrección
- 0
- Explotada en ataques
- 0
Distribución por gravedad
- Alta 3
- Media 4
- Baja 1
Divulgaciones por año
- 2022: 2
- 2023: 0
- 2024: 0
- 2025: 0
- 2026: 6
-
markdown-it: Complejidad cuadrática en smartquotes con comillas de cierre no coincidentes esta entrada
Identifica las vulnerabilidades de tu aplicación
Con la integración de DockRay y el inventario de software activado, DockRay compara las versiones notificadas de los componentes con las vulnerabilidades conocidas y avisa de las coincidencias confirmadas. La cobertura depende de la tecnología compatible y de los avisos disponibles.