Skip to main content

Mistune EUVDEUVD-2026-108416

| CVE-2026-115347 HIGH
Inefficient Algorithmic Complexity (CWE-407)
2026-10-22 disclosure@vulncheck.com GHSA-8xqv-hm62-6r4g
8.7
CVSS 4.0 · Vendor: vulncheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Find endpoint rendering attacker markdown
  2. Exploit
    Submit long unmatched bracket payload
  3. Execution
    Trigger N² forward scans in parse_link_text
  4. Impact
    Stall worker processes, denial of service

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V2 - Validation and Business Logic Algorithmic complexity limits
Exploitation Conditions

The application must pass attacker-influenced markdown to mistune.html() (or an equivalent mistune parse entry point) on the server side - e.g. rendering comment fields, web-form content, federated/user-generated content, or markdown pulled from an external feed. No special configuration or feature flag is required: the quadratic behavior occurs in the default parse_link_text path against any affected version (3.2.0, 3.2.1, and main up to the 3.3.0 fix). The practical limiting factor is exposure, not configuration - deployments that only render trusted/first-party markdown (as the reporter notes for their own Celery task) have low direct risk, while any surface accepting untrusted markdown is directly affected. No authentication or user interaction is needed per the supplied CVSS vector (PR:N/UI:N).

Impact

The CVSS 4.0 base score of 8.7 (AV:N/AC:L/AT:N/PR:N/UI:N) reflects an attack that is network-reachable, low-complexity, and requires no privileges or user interaction - trivially triggerable. However, the impact is strictly availability (VA:H; VC:N/VI:N - no confidentiality or integrity loss), so this is a denial-of-service issue, not a code-execution or data-exposure one. A working proof-of-concept exists in the GHSA advisory with measured timings (quadratic growth: 25 KB of brackets stalls a worker past 15 seconds, 50 KB to ~2 minutes), confirming the quadratic blowup is real and reliably reproducible. vuln.today assigns a 'this_week' priority label, consistent with a readily-exploitable but non-critical-impact bug. No EPSS score and no SSVC exploitation/automatable/technical-impact fields were supplied, so those signals cannot be weighed; the vulnerability is NOT in CISA KEV and there is no evidence of active exploitation. Net: a genuine, easy-to-trigger DoS whose real-world severity is bounded by exposure - it only matters where an attacker can get influenced markdown into a server-side mistune.html() call. The high CVSS is driven by the clean network/no-auth vector rather than by broad or severe impact, so treat it as a real but scoped availability priority rather than an emergency.

Exploit ScenarioDerived

An attacker submits a markdown payload consisting of a long run of unmatched '[' characters followed by a single 'x' and matching ']' characters (e.g. via a comment field, web form, or federated/external feed) to an application that renders it server-side with mistune.html(). Each opening bracket triggers a full forward scan in parse_link_text, producing N scans of an N-character input (quadratic time) that pins a worker process for seconds to minutes per request. A working PoC with timing output is published in the GHSA advisory, demonstrating the stall with inputs as small as ~25 KB.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 22, 2026

Quadratic denial of service in Mistune's Markdown parser (parse_link_text) affects versions 3.2.0, 3.2.1 and main prior to the 3.3.0 fix: a string consisting of many unmatched opening square brackets followed by a character and many closing brackets causes repeated full forward scans, so cost grows with the square of input length. Per the Python package advisory, roughly 25 KB of brackets stalls a worker past 15 seconds on an Apple M2 and about 50 KB stretches past two minutes, letting remote attackers wedge any server-side caller of mistune.html() that renders attacker-influenced markdown, such as comment fields, web forms or federated content feeds. The CVSS 4.0 base score is 8.7 (AV:N/AC:L/AT:N/PR:N/UI:N, high availability only), exploit code in the form of a timing benchmark is published in the advisory, and no CISA KEV entry or other active-exploitation signal is present in the supplied data.

RemediationAI

Upgrade to Mistune 3.3.0, the version the advisory names as containing the fix; the upstream change caps how far parse_link_text scans forward, mirroring the existing 500-character LINK_LABEL pattern, so no API change is expected. Where upgrading cannot be done immediately, the practical control is to stop feeding attacker-influenced Markdown into mistune.html() or equivalent parse entry points: pre-validate or reject submissions containing long runs of unmatched square brackets, or truncate input to a small length before rendering, at the cost of rejecting some legitimate deeply nested link syntax. Running rendering in worker processes with hard timeouts and per-request resource limits contains the blast radius but does not prevent the CPU stall, and restricting which submission surfaces accept Markdown narrows exposure while leaving the parser itself vulnerable. Reference advisories: https://github.com/lepture/mistune/security/advisories/GHSA-f32h-38gf-rg5r and https://www.vulncheck.com/advisories/mistune-before-3.3.0-quadratic-denial-of-service-via-parse-link-text.

Affected VersionsENISA

mistune 0 <3.3.0

Affected Packages

euvd mistune fix: 3.3.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Mistune is a pure-Python Markdown parser; its inline processing loop treats each '[' as the start of a possible link and calls parse_link, which in turn calls parse_link_text in helpers.py. That helper forward-scans the remaining source to balance brackets using a regular expression; when the candidate text turns out not to be a link (no parenthesised URL follows the closing bracket), the outer loop advances only one character and the next '[' repeats the entire scan, producing N scans over an N-character input. The advisory's profile at N=1600 records parse_link_text invoked 1599 times with about 2.56 million re.Pattern.search calls underneath, confirming quadratic behavior; the measured curve (801 chars ~35 ms, 3201 chars ~501 ms, 12801 chars ~8066 ms, 25601 chars aborted above 15 s) quadruples time for each doubling of input. The root cause class is CWE-407, inefficient algorithmic complexity, and the advisory recommends capping the forward scan length, mirroring the existing LINK_LABEL pattern which already limits to 500 characters, or alternatively optimising failed start positions. This is distinct from the earlier parse_link_title issue tracked as GHSA-hjph-f4mc-wx4c / CVE-2026-33441. It is a pure availability defect: no memory corruption, injection or data exposure is described.

Know when Mistune gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (vulncheck) PRIMARY 8.7 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
vuln.today AI 7.5 HIGH

Remote unauthenticated markdown input with no user interaction (AV:N/AC:L/PR:N/UI:N); impact is an availability-only DoS, so C:N/I:N/A:H and scope unchanged.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (vulncheck).

CVSS VectorVendor: vulncheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Oct 22, 2026 - 20:18 EUVD
CVE Published
Oct 22, 2026 - 19:17 cve.org
HIGH 8.7

DescriptionCVE.org

Mistune before 3.3.0 contains an inefficient algorithmic complexity vulnerability in parse_link_text that allows remote attackers to cause denial of service through unbalanced square brackets. Attackers can submit markdown containing long runs of unmatched brackets to mistune.html(), triggering repeated forward scans that stall worker processes for minutes.

Executive ViewAI

Why It Matters

CVE-2026-115347 is a high-severity denial-of-service vulnerability in Mistune, a Markdown parser used by web applications to render user-supplied content. Attackers can send specially crafted Markdown (a string of unmatched brackets) that causes server-side CPU exhaustion, potentially making comment sections, forms, or federated feeds unresponsive. Since this affects any service using mistune.html() on untrusted input, product teams and platform owners should prioritize remediation to prevent service outages.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis; interim mitigations include enforcing strict input size limits on Markdown content, rate limiting or blocking requests with excessive bracket characters, and isolating Markdown rendering in resource-constrained sandboxes to limit CPU exhaustion.

Threat Intelligence Overview

Prevalence
Medium
popular Python markdown library, embedded in many web apps and notebook tooling
Data Quality
3 sources
Confidence: Low

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
High

Priority Score

44
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +44
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

CVE-2026-49851 HIGH POC
8.7 Jun 24

Uncontrolled CPU consumption in Mistune, a Python Markdown parser, allows remote unauthenticated attackers to cause deni

CVE-2017-15612 MEDIUM POC
6.1 Oct 19

mistune.py in Mistune 0.7.4 allows XSS via an unexpected newline (such as in java\nscript:) or a crafted email address,

CVE-2026-59928 HIGH POC
7.5 Jul 08

Denial of service in Mistune (the lepture Python Markdown parser) before 3.3.0 lets remote unauthenticated attackers exh

CVE-2026-59922 HIGH POC
7.5 Jul 08

Denial of service in Mistune, a Python Markdown parser, affects all versions prior to 3.3.0 when the strikethrough, mark

CVE-2026-59925 HIGH POC
7.5 Jul 08

Denial of service in Mistune, a widely used pure-Python Markdown parser, affects all versions prior to 3.3.0 where the d

CVE-2022-34749 HIGH
7.5 Jul 25

In mistune through 2.0.2, support of inline markup is implemented by using regular expressions that can involve a high a

CVE-2017-16876 MEDIUM
6.1 Dec 29

Cross-site scripting (XSS) vulnerability in the _keyify function in mistune.py in Mistune before 0.8.1 allows remote att

CVE-2026-59923 MEDIUM POC
6.1 Jul 08

Cross-site scripting in Mistune Python Markdown parser (all versions before 3.3.0) allows attacker-controlled Markdown c

CVE-2026-59929 MEDIUM POC
6.1 Jul 08

Cross-site scripting in Mistune prior to 3.3.0 stems from an incomplete URI scheme blocklist in the `safe_url` filter, p

CVE-2026-59924 MEDIUM POC
5.9 Jul 08

Path traversal in Mistune's Include plugin allows reading arbitrary files from the server filesystem when processing att

CVE-2026-59926 MEDIUM
5.3 Jul 08

Cross-site scripting in Mistune (Python Markdown parser) prior to version 3.2.1 allows injection of arbitrary HTML attri

CVE-2026-59927 MEDIUM POC
5.3 Jul 08

Unbounded recursion in Mistune's Include directive (all versions prior to 3.3.0) can be triggered by a pair of mutually-

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy