CVE-2026-111758
High · 7.5CVSS
7.5
EPSS
0.5%
Published
Oct 20, 2026
CISA due date
—
Cloudanix analysis
A bug in a popular tool that reads Markdown text lets attackers send specially crafted input that makes the tool use far too much processing power, potentially making websites or services that rely on it slow or unavailable.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- Library
- Class
- Denial of service
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Unclosed link reference definition labels or titles trigger quadratic-time processing in reference.ts via repeated string concatenation and subsequent charCodeAt/slice operations that force V8 cons-string flattening before invalidation is detected.
Why it matters to the business
Attackers can remotely exhaust CPU resources on any service that parses untrusted Markdown, resulting in denial of service and degraded availability for applications or platforms relying on the affected parser versions.
How an attack unfolds
An attacker crafts a Markdown document containing a link reference definition whose label or title lacks a closing delimiter and submits it to any endpoint that invokes markdown-it with default options; the parser lazily accumulates continuation lines, repeatedly copying growing strings, until CPU exhaustion occurs without requiring authentication or special configuration.
How to fix it
Upgrade markdown-it to version 14.3.3 or 15.0.3; rebuild and redeploy all dependent applications; consider adding input size or complexity limits as a defense-in-depth measure until patching is complete.
How to confirm the fix worked
Confirm the installed version is at least 14.3.3 or 15.0.3 via package manifest or runtime inspection; test the parser against a known-bad unclosed reference payload and verify linear-time completion; review change logs for the reference.ts fix.
Typical attack path
- Identify a target service accepting untrusted Markdown input processed by markdown-it
- Craft a minimal payload with an unclosed link reference definition label or title
- Submit the payload via network request or file upload
- Observe sustained high CPU utilization on the parsing thread or worker until timeout or crash
How to detect it
Search application and web server logs for unusually large or repetitive Markdown submissions that trigger high CPU; monitor process CPU and memory metrics during parsing; review any custom Markdown sanitization or preprocessing logs for entries containing long unterminated bracket sequences.
What your security team should do
- Prioritize patching all instances within the next maintenance window given the public availability of the flaw six days after disclosure
- Inventory all direct and transitive dependencies on markdown-it across the ecosystem
- Implement request timeouts and resource limits on Markdown parsing endpoints as interim controls
- Add the patched versions to dependency update automation and vulnerability scanning policies
The record
markdown-it is a Markdown parser. From versions 14.1.0 to before 14.3.3, and 15.0.0 to before 15.0.3, a link reference definition whose label or title is never closed is O(n²) with default options. Continuation lines are pulled lazily with str += lineContent in src/rules_block/reference.ts, and the subsequent charCodeAt and slice calls flatten the V8 cons-string, copying everything collected so far; this runs before the rule decides the definition is invalid. No options are required to trigger it. This issue has been patched in versions 14.3.3 and 15.0.3.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|
Related vulnerabilities
- CVE-2026-63341 Aedes is an MQTT broker that can run on any stream server. CWE-400
- CVE-2026-62300 Filecoin Pin is an IPFS Pinning Service API implementation that pins to Filecoin's PDP… CWE-400
- CVE-2026-62254 LibreDWG is a free C library to read and write DWG files. CWE-400
- CVE-2026-62250 LibreDWG is a free C library to read and write DWG files. CWE-400
- CVE-2026-62303 Pistache is a high-performance REST toolkit written in C++. CWE-400
- CVE-2026-62160 Daptin is a GraphQL/JSON-API headless CMS. CWE-400
- CVE-2026-61848 Crass is a Ruby CSS parser that's fully compliant with the CSS Syntax Level 3… CWE-400
- CVE-2026-61854 VoiceSentinel is a real-time voice moderation system for Minecraft servers. CWE-400