
Cloud Vulnerability DB
A community-led vulnerabilities database
CVE-2026-48988 is a denial-of-service vulnerability in the markdown-it Markdown parser caused by quadratic (O(n²)) algorithmic complexity in the smartquotes rule when typographer: true is enabled. It affects all versions of markdown-it up to and including 14.1.1 (npm package). The vulnerability was first published by maintainer puzrin on May 23, 2026, added to the GitHub Advisory Database on June 15, 2026, and assigned CVE-2026-48988 shortly after. It carries a CVSS v3.1 base score of 5.3 (Medium) (Github Advisory, Security Advisory).
The root cause is inefficient algorithmic complexity (CWE-407) and uncontrolled resource consumption (CWE-400) in the replaceAt() helper function within lib/rules_core/smartquotes.mjs. When typographer: true is set, the smartquotes rule iterates over each quotation mark in a text token and calls replaceAt(), which performs str.slice(0, index) + ch + str.slice(index + 1) — an O(n) string operation — once per quote character. With n quote characters in a single token, the total complexity becomes O(n²), causing exponential CPU growth for quote-heavy inputs. The attack vector is network-based, requires no authentication or user interaction, and the only precondition is that the target application has typographer: true enabled (which is not the default but is commonly enabled in production). A public PoC demonstrates that 160,000 consecutive double-quote characters cause ~21 seconds of processing time versus ~8ms with typographer disabled (Security Advisory, Fix Commit).
Successful exploitation causes excessive CPU consumption on the server, degrading or completely disrupting service availability for legitimate users. There is no impact on confidentiality or data integrity — the vulnerability is purely an availability issue. An attacker can submit a relatively small payload (~160KB of quote characters) that ties up server CPU for over 21 seconds per request; repeated submissions can exhaust CPU resources and render the service unresponsive (Security Advisory).
markdown-it with typographer: true enabled (e.g., comment systems, documentation platforms, chat applications).") or single-quote (') characters. A payload of 160,000 characters (~160KB) is sufficient to cause ~21 seconds of CPU processing per request:const payload = '"'.repeat(160000);" or '); unusually high request body sizes (~160KB+) to text/content submission endpoints.markdown-it application, particularly correlated with incoming requests to content rendering endpoints; CPU spikes that scale with request volume rather than complexity of rendered output.Upgrade markdown-it to version 14.2.0 or later, which replaces the replaceAt() approach with a batch replacement strategy (addReplacement()/applyReplacements()) that reduces smartquotes processing to O(n) (Fix Commit, Github Advisory). As an immediate workaround for applications that cannot upgrade, disable the typographer option (typographer: false) in the markdown-it configuration — note that this is the default setting, so only explicitly enabled deployments are affected. Additionally, consider implementing input length limits or rate limiting on Markdown rendering endpoints to reduce the attack surface.
The vulnerability was reported by researcher tndud042713 and published by the markdown-it maintainer puzrin directly via GitHub Security Advisories. Detection coverage has been added by Qualys (detection ID 5013791) and Tenable Nessus (plugin 321702), indicating prompt uptake by the vulnerability scanning community (Github Advisory). The issue was also tracked by OSV, ENISA EUVD, and GitLab's advisory database shortly after disclosure, reflecting standard community propagation for a moderate-severity open-source library vulnerability.
Source: This report was generated using AI
Free Vulnerability Assessment
Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.
Get a personalized demo
"Best User Experience I have ever seen, provides full visibility to cloud workloads."
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
"We know that if Wiz identifies something as critical, it actually is."