
Cloud Vulnerability DB
A community-led vulnerabilities database
CVE-2026-76098 is a Denial of Service (DoS) vulnerability in Mistune, a Python Markdown parser, caused by uncontrolled recursion during HTML rendering of deeply nested emphasis tokens. Versions 3.3.0 through 3.3.2 are affected; the issue is fixed in version 3.3.3. An unauthenticated remote attacker can crash the parsing process by submitting crafted Markdown containing approximately 1,000 consecutive asterisk characters (~2KB of input). It carries a CVSS v3.1 base score of 7.5 (High) (GitHub Advisory).
The root cause is CWE-674 (Uncontrolled Recursion) in HTMLRenderer.render_token() located at src/mistune/renderers/html.py:40-57. The InlineParser's _process_emphasis_delimiters() method creates deeply nested emphasis tokens from consecutive asterisk characters — every two asterisks add one nesting level, so 1,000 asterisks produce approximately 500 nesting levels. The render_token() method recursively calls self.render_tokens(token['children'], state) for each nested token, generating roughly 2 stack frames per level (~1,000 total), which exceeds Python's default recursion limit (sys.getrecursionlimit() = 1000) and raises a RecursionError. Both mistune.markdown() and mistune.html() APIs are affected (GitHub Advisory, Fix Commit).
Successful exploitation crashes the Python process running Mistune, causing a complete denial of service for all concurrent users sharing that process. In web applications that render user-generated Markdown content (e.g., forum posts, comments, or documentation), a single malicious ~2KB payload is sufficient to take down the service. There is no confidentiality or integrity impact; the vulnerability is limited to availability (GitHub Advisory).
A proof-of-concept exploit is publicly available in the GitHub Security Advisory and is trivially simple — a string of 1,000 asterisk characters is sufficient to trigger the crash. The NVD SSVC assessment classifies exploitation as automatable with a PoC status. The EPSS score is approximately 0.00278, indicating low but non-zero probability of exploitation in the wild. No in-the-wild exploitation or threat actor attribution has been reported, and the vulnerability is not listed in the CISA KEV catalog (GitHub Advisory).
'*' * 1000), totaling roughly 2KB of input.mistune.html() or mistune.markdown().InlineParser generates ~500 levels of nested emphasis tokens; HTMLRenderer.render_token() recursively processes them, exceeding Python's default recursion limit of 1,000 frames.RecursionError and crashes, denying service to all users sharing that process (GitHub Advisory).RecursionError exceptions originating from mistune/renderers/html.py or mistune/inline_parser.py; stack traces referencing render_token() or render_tokens() repeated hundreds of times.*{500,}) targeting Markdown input endpoints.Upgrade Mistune to version 3.3.3, which introduces a max_emphasis_depth limit (defaulting to 20) in the InlineParser to prevent excessive nesting. The fix, applied in commit 0938fb7, adds depth checking in _process_emphasis_delimiters() so that emphasis tokens exceeding the depth limit are treated as literal text rather than parsed recursively. As a temporary workaround prior to patching, applications can increase Python's recursion limit (sys.setrecursionlimit()) or implement request-level input length/content validation to reject inputs with excessive consecutive asterisks (Fix Commit, GitHub Advisory).
The vulnerability was reported by researcher wan1yan and published by the Mistune maintainer (lepture) via GitHub Security Advisories on August 21, 2026. The fix was promptly committed and released in version 3.3.3. No significant broader media coverage or notable community debate has been identified beyond standard vulnerability tracking (GitHub Advisory).
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."