CVE-2026-76098 in Mistuneinfo

Summary

by MITRE • 08/24/2026

Mistune is a Python Markdown parser with renderers and plugins. Versions 3.3.0 through 3.3.2 are vulnerable to DoS through deeply nested tokens. HTML rendering creates deeply nested emphasis tokens from consecutive asterisk characters, and recursive rendering in HTMLRenderer.render_token() can exceed Python's recursion limit and raise RecursionError, allowing crafted Markdown to crash a parsing process. This issue is fixed in version 3.3.3

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

Analysis

by VulDB Data Team • 08/24/2026

The vulnerability identified in Mistune versions 3.3.0 through 3.3.2 represents a significant reliability risk for applications relying on this Python-based Markdown parser. The core of the issue lies within the HTML rendering engine, specifically in how it processes emphasis tokens generated from consecutive asterisk characters. When a user provides input containing deeply nested sequences of these markers, such as multiple levels of bold or italic text indicators without proper closing tags or balanced syntax, the internal logic fails to limit recursion depth appropriately. This flaw allows an attacker to craft specific Markdown strings that trigger excessive nesting during the parsing phase, leading directly to a denial of service condition rather than any data exfiltration or code execution.

From a technical perspective, the root cause is located in the recursive rendering mechanism implemented within the HTMLRenderer.render_token() method. Python enforces a default recursion limit to prevent stack overflow errors, typically set around one thousand frames depending on system configuration. The vulnerability arises because the parser does not adequately validate or truncate deeply nested structures before passing them to this recursive function. As the renderer attempts to process each level of nesting by calling itself recursively for child tokens, it rapidly consumes available call stack space. Once the depth exceeds Python's recursion limit, a RecursionError is raised unhandled, causing the parsing thread or process to terminate abruptly. This behavior effectively allows any user with access to the Markdown input interface to crash the service hosting the parser.

The operational impact of this vulnerability is primarily centered on availability and system stability. For web applications that accept user-generated content in Markdown format for display as HTML, such as forums, documentation sites, or blog platforms, an attacker can exploit this flaw by submitting a specially crafted post containing deeply nested asterisks. This action would cause the backend process handling the request to crash, potentially leading to service outages if the application does not have robust error recovery mechanisms in place. In environments where Mistune is used for batch processing large volumes of documents or within API endpoints that parse Markdown on demand, this vulnerability can be leveraged to create sustained denial-of-service conditions by repeatedly triggering crashes against specific worker processes.

This issue aligns with CWE-674, which describes Uncontrolled Recursion, a common flaw in software where recursive functions lack proper termination conditions or input validation for depth. Furthermore, from the perspective of the MITRE ATT&CK framework, this vulnerability facilitates Availability Impact techniques, specifically those involving resource exhaustion through application layer attacks such as HTTP Slowloris or similar denial-of-service vectors that target parsing engines. The attack vector is classified as remote with low complexity, requiring only a single crafted input string to achieve the desired effect of crashing the parser service.

Mitigation for this vulnerability requires an immediate upgrade to Mistune version 3.3.3 or later, where the developers have addressed the recursive rendering logic to prevent stack overflow scenarios. For organizations unable to patch immediately due to dependency constraints, implementing a Web Application Firewall rule that detects and blocks excessively long sequences of consecutive asterisks in Markdown input can provide temporary protection. Additionally, application-level safeguards such as wrapping the parsing function in try-except blocks to catch RecursionError exceptions and returning a standardized error response rather than crashing the process can improve resilience against this specific attack vector until the underlying library is updated.

Responsible

GitHub M

Reservation

08/18/2026

Disclosure

08/24/2026

Moderation

accepted

CPE

ready

EPSS

0.00000

KEV

no

Activities

low

Sources

Interested in the pricing of exploits?

See the underground prices here!