Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSubmit crafted Markdown to app
-
DeliveryReach extract_metadata() parser
-
ExploitTrigger catastrophic regex backtracking
-
ExecutionExhaust CPU on worker thread
-
ImpactDenial of service / app unavailability
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource consumption limits
MITRE ATT&CK
1 technique across 1 tactic: Impact The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires the target application to invoke markdown2.extract_metadata() (i.e., metadata/front-matter parsing enabled) on attacker-supplied Markdown content, using markdown2 at or below v2.5.5. It does NOT affect applications that only render Markdown without metadata extraction. The limiting factor is reachability: although no authentication or user interaction is needed once the parsing endpoint is exposed, the vulnerable function is an opt-in feature rather than the default rendering path, and impact is confined to availability (CPU exhaustion), not data compromise. |
| Impact | Signals are moderate and internally consistent rather than alarming. The provided CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, base 7.5) reflects a pure availability impact (CWE-400 resource exhaustion / ReDoS) with no confidentiality or integrity loss - the 'HIGH' rating is driven entirely by the A:H component, which is typical for DoS and should not be read as a code-execution-class threat. EPSS is low at 0.15% (4th percentile), and the CVE is NOT on CISA KEV, so there is no evidence of active or widespread exploitation. A gist reference (NanaSec) is present and, for a ReDoS, almost certainly contains proof-of-concept trigger input, so publicly available exploit code likely exists - but POC availability must not be conflated with active exploitation. No SSVC decision data was supplied. The key caveat the raw CVSS hides: the AV:N/PR:N/UI:N metrics assume the vulnerable extract_metadata() path is reachable with attacker-controlled Markdown, which is an opt-in metadata-parsing feature, not markdown2's default rendering path - so real-world reachability is narrower than the network-unauthenticated vector implies. Net: a genuine but lower-tier priority - patch in normal cycles, prioritize only if your application parses untrusted Markdown metadata. |
| Exploit ScenarioDerived | An application uses markdown2's extract_metadata() to parse front-matter/metadata from user-submitted Markdown (e.g., a CMS, wiki, or comment system). An attacker submits a small crafted Markdown document whose metadata section triggers catastrophic regular-expression backtracking, pinning a CPU core and hanging the worker. A public gist appears to provide the triggering input, lowering the attack-complexity (consistent with AC:L). |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 20, 2026
Regular-expression denial of service in trentm markdown2 through v2.5.5 lets remote attackers exhaust CPU by submitting a crafted Markdown document to any application that calls extract_metadata() (the front-matter/metadata parsing path). Exploitation is unauthenticated and requires no user interaction once such an endpoint is exposed, but the vulnerable function is an opt-in feature - pure rendering pipelines that never invoke metadata extraction are not affected. Impact is confined to availability; there is no public exploit code reported and EPSS is low (0.15%, 4th percentile), so risk is moderate rather than urgent.
RemediationAI
Upgrade markdown2 beyond v2.5.5 once a fixed release is published; no exact patched version is confirmed in the available data, so track the upstream trentm/markdown2 project and the advisory at https://gist.github.com/NanaSec/354b4188bbd7f4105008c7b8be49b0ba and https://nvd.nist.gov/vuln/detail/CVE-2026-88753 for the fix commit or release. Where an immediate upgrade is not possible, the most effective control is to stop passing untrusted input to extract_metadata() - disable metadata/front-matter extraction on user-submitted content, or pre-validate and cap the size of front-matter blocks before parsing (trade-off: legitimate large metadata headers will be rejected). Additionally, run Markdown parsing in a worker with a hard CPU/wall-clock timeout and process isolation so that a catastrophic-backtracking input is killed rather than stalling the request handler, and rate-limit or restrict access to endpoints that perform metadata extraction (trade-off: added latency and possible throttling of bulk content imports). Monitor for slow or hanging requests on Markdown ingestion paths as a detection signal.
Affected VersionsENISA
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
markdown2 is a pure-Python Markdown implementation in which lib/markdown2.py provides an extract_metadata() helper that parses YAML-style front matter and metadata blocks at the top of a document. That parsing is driven by regular expressions whose patterns exhibit catastrophic backtracking (CWE-400: Uncontrolled Resource Consumption, expressed here as ReDoS), so a specially crafted Markdown document can force superlinear matching time and pin a CPU core for an extended period. Because extract_metadata() is invoked explicitly by the host application rather than as part of the default HTML rendering path, the root cause is a combination of an inefficient regex and the library exposing that routine to untrusted input. The CVSS:3.1 vector AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H reflects a remotely reachable, low-complexity, unauthenticated availability-only issue; CPE data in the feeds is a placeholder (n/a) and version detail comes from the advisory text (lib/markdown2.py through v2.5.5).
Know when Python 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
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Remotely supplied Markdown reaches the parser with no auth or interaction (AV:N/PR:N/UI:N), a crafted input reliably triggers backtracking (AC:L), and only availability is affected (C:N/I:N/A:H).
Primary rating from Vendor (mitre).
CVSS VectorVendor: mitre
Lifecycle Timeline
3DescriptionCVE.org
A Regular-Expression Denial of Service (ReDoS) in the Markdown2. extract_metadata() function (lib/markdown2.py) of trentm markdown2 through v2.5.5 allows attackers to cause a Denial of Service (DoS) via a crafted Markdown document.
Executive ViewAI
The markdown2 Python library (versions through 2.5.5) contains a regular-expression denial-of-service flaw that can let a remote party exhaust CPU and degrade availability on any application exposing its optional metadata/front-matter extraction feature to untrusted Markdown. Because that path is opt-in, teams that only render Markdown are unaffected, and the absence of public exploit code plus a very low EPSS score make this a contained availability risk rather than an imminent compromise. Leadership should care about potential service disruption and the lack of a vendor fix, which shifts the burden onto configuration and input-handling controls until an update ships.
No vendor-released patch identified at time of analysis; interim mitigations are to disable or avoid extract_metadata() on untrusted input, restrict Markdown document size and complexity, enforce per-request CPU and timeout limits, rate-limit affected endpoints, and monitor for CPU exhaustion.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t
BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser
pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi
The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python
BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica
OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph
pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.
Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301
In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse
Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to
Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/
pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne
EUVD-2026-102186
GHSA-vv85-hg53-g6g2
NVD
CVE.org
EPSS
Exploit-DB