Skip to main content

league/commonmark EUVDEUVD-2026-72386

| CVE-2026-86428 HIGH
Inefficient Algorithmic Complexity (CWE-407)
2026-09-07 VulnCheck GHSA-8h74-w38m-j62j
8.7
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Identify app with AttributesExtension registered
  2. Delivery
    Craft Markdown payload with many distinct attribute names
  3. Exploit
    Submit payload to Markdown conversion endpoint
  4. Execution
    Trigger O(n²) mergeAttributes and filterAttributes loops
  5. Persist
    Saturate PHP worker CPU for 20+ seconds per request
  6. Impact
    Exhaust worker pool, denying service to legitimate users

Vulnerability Assessment

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

Exploitation requires that the target application explicitly registers AttributesExtension on its league/commonmark Environment instance - this is an opt-in configuration not present in CommonMarkConverter, GithubFlavoredMarkdownConverter, or GithubFlavoredMarkdownExtension; applications using only these built-in converters are completely unaffected. The attacker must be able to submit arbitrary Markdown content to an endpoint that invokes the affected conversion path (e.g., a comment form, wiki editor, documentation ingestion API, or preview endpoint). The CVSS PR:N vector indicates that no authentication is required at the vulnerability level, though individual application endpoints may enforce their own access controls. The attack is effective against versions 1.5.0 through 2.9.2 inclusive; upgrading to 2.9.1 or 2.9.2 in response to GHSA-jjv6-8j6v-6j52 does not protect against this variant for attribute names other than class. There are no platform, OS, or network-topology prerequisites beyond HTTP reachability to the Markdown-accepting endpoint.

Impact

The CVSS 4.0 score of 8.7 (AV:N/AC:L/AT:N/PR:N/UI:N/VA:H) is technically accurate for a fully exposed deployment but overstates risk for the majority of installations: AttributesExtension is opt-in and absent from all built-in converter classes, so most commonmark deployments are entirely unaffected. For applications that do register the extension - documentation platforms, content editors, CMS systems accepting user Markdown - the risk is concrete and easy to operationalise; the advisory's benchmarks show 256 KB producing 20 seconds of CPU load, making repeated submissions a reliable mechanism to exhaust PHP-FPM worker pools. Even a mid-sized municipal IT team in olsztyn running a documentation platform on this library should treat this as urgent if AttributesExtension is in use, because the attack is fully described and requires no authentication. There is no CISA KEV listing and no independently published exploit code; exploitation potential is inferred from the detailed algorithmic description in the maintainer's GitHub Security Advisory. The incomplete 2.9.1 patch introduces a false-confidence risk: operators who upgraded specifically to address GHSA-jjv6-8j6v-6j52 are still fully exposed to this variant.

Exploit ScenarioDerived

An attacker discovers a PHP web application - such as a documentation site or content management system - that accepts user-submitted Markdown and has AttributesExtension registered in its league/commonmark Environment. The attacker constructs a ~256 KB POST body consisting of hundreds of adjacent inline attribute blocks with distinct names (e.g., {a0="v"}{a1="v"}{a2="v"}...) targeting a single block node, then fires this request repeatedly against the endpoint. Each request monopolises a PHP-FPM worker for 20+ seconds, and a handful of concurrent requests saturate the worker pool, denying service to all legitimate users.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.3% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Sep 07, 2026

Quadratic CPU exhaustion in league/commonmark's optional AttributesExtension (versions 1.5.0 through 2.9.2) allows unauthenticated remote attackers to perform denial of service against PHP applications that explicitly register this extension. By submitting Markdown containing many distinctly-named attributes targeting a common block, an attacker triggers O(n²) attribute merging and filtering loops; a 256 KB payload consumes over 20 seconds of PHP CPU time per conversion request. No public exploit code has been identified at time of analysis, but the attack primitive is described in sufficient detail in the GitHub Security Advisory that construction is trivial, and developers who applied the partial 2.9.1 patch for the prior advisory GHSA-jjv6-8j6v-6j52 may incorrectly believe they are already protected.

RemediationAI

Upgrade league/commonmark to version 2.10.0 or later, which contains the complete fix at commit f27eb720972490b5af4dbb635ad8634529faf9f2; run composer require league/commonmark:^2.10.0 to update and pin to the patched range. The vendor advisory is available at https://github.com/thephpleague/commonmark/security/advisories/GHSA-8rr7-cvq3-gmfh. If an immediate upgrade is not possible, the only fully effective workaround is to deregister AttributesExtension from the Environment configuration, which eliminates the attack surface entirely but removes attribute annotation support from Markdown output. Applications that must retain AttributesExtension functionality can implement upstream payload-size limits (e.g., rejecting Markdown submissions exceeding a few kilobytes) to raise the cost of attack, but this does not eliminate the quadratic behaviour - a sufficiently small threshold must be chosen relative to acceptable processing time. Rate-limiting Markdown conversion endpoints adds a further layer of defence. Operators should not treat the 2.9.1 or 2.9.2 upgrades as sufficient mitigation for this vulnerability.

Affected VersionsENISA

commonmark 1.5.0 <2.10.0

Affected Packages

composer league/commonmark fix: 2.10.0
euvd commonmark fix: 2.10.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in composer, euvd

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

Technical ContextAI · show details

The affected package is league/commonmark (cpe:2.3:a:thephpleague:commonmark), a PHP implementation of the CommonMark specification maintained by The PHP League. The vulnerability is classified as CWE-407 (Algorithmic Complexity) and manifests in two code paths within the optional AttributesExtension. First, AttributesListener::processDocument() calls AttributesHelper::mergeAttributes() (which uses array_merge()) and AttributesHelper::filterAttributes() (which applies a regular expression against every attribute name) on the full accumulated attribute set for each new attribute processed - so a run of n distinctly-named attributes costs O(n²) in both merging and filtering passes. This path is exploitable via adjacent inline attributes (e.g., {a0="v"}{a1="v"}...) or chained reference-definition attribute blocks, and has been present since version 1.5.0. Second, AttributesBlockContinueParser::tryContinue() rebuilds the full accumulated attribute set on each continuation line, producing the same O(n²) scaling for consecutive attribute-block lines; this path has been present since version 2.0.0. The 2.9.1 partial fix for GHSA-jjv6-8j6v-6j52 optimised only the class attribute accumulation path, leaving all other attribute names on the original quadratic code path. The extension must be explicitly registered via the Environment API and is not active in CommonMarkConverter, GithubFlavoredMarkdownConverter, or GithubFlavoredMarkdownExtension.

Know when Commonmark 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

Network-delivered DoS with no auth or interaction required once AttributesExtension is active; AC:L because crafting distinct attribute names is trivial and requires no special knowledge.

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
Sep 07, 2026 - 14:02 EUVD
CVE Published
Sep 07, 2026 - 12:53 cve.org
HIGH 8.7

DescriptionCVE.org

commonmark versions from 1.5.0 before 2.10.0 contain a denial of service vulnerability in the AttributesExtension when processing distinctly-named attributes. Attackers can submit Markdown with numerous distinct attribute names to cause quadratic-time attribute merging and filtering, consuming disproportionate CPU resources and preventing legitimate requests from completing.

Technical POC Analysis

CWE-407, inefficient algorithmic complexity.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

league/commonmark's AttributesExtension (versions 1.5.0-2.9.2) contains a resource-exhaustion vulnerability allowing unauthenticated attackers to cause application downtime via crafted Markdown. Organizations deploying this library face immediate denial-of-service risk. A critical complication: developers who applied a previous partial security patch may incorrectly believe their systems are protected, potentially leaving exposure undetected.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Disable the AttributesExtension in production unless functionally required for application operation. If required, enforce strict input validation: reject Markdown payloads exceeding 50 KB in size, reject payloads containing more than 20 attribute definitions on a single block, and implement rate limiting on Markdown conversion endpoints (e.g., 10 conversions per IP address per minute).

Threat Intelligence Overview

EPSS Score
0.3%
Top 80% exploitable
Prevalence
Medium
popular PHP Markdown library, common in Laravel and PHP CMS ecosystems
Social Media
1
Sightings
Data Quality
7 sources
Confidence: High

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 0.3%
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
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

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-2019-10010 MEDIUM POC
6.1 Mar 24

Cross-site scripting (XSS) vulnerability in the PHP League CommonMark library before 0.18.3 allows remote attackers to i

CVE-2018-20583 MEDIUM POC
6.1 Dec 30

Cross-site scripting (XSS) vulnerability in the PHP League CommonMark library versions 0.15.6 through 0.18.x before 0.18

CVE-2026-86434 HIGH
8.7 Sep 07

Quadratic CPU exhaustion in league/commonmark 2.0.0-2.8.3 allows unauthenticated remote attackers to deny service by sub

CVE-2026-86433 HIGH
8.7 Sep 07

Quadratic-time algorithmic complexity in league/commonmark's Attributes extension exposes PHP applications to remote den

CVE-2026-86429 HIGH
8.7 Sep 07

Quadratic parsing complexity in league/commonmark (thephpleague/commonmark, versions ≥1.5.0 and <2.9.1) allows unauthent

CVE-2026-86430 HIGH
8.7 Sep 07

Three independent super-linear parsing paths in league/commonmark before 2.9.1 allow unauthenticated remote attackers to

CVE-2026-86435 HIGH
8.7 Sep 07

Quadratic-blowup denial of service in league/commonmark's Footnote extension allows remote unauthenticated attackers to

CVE-2026-105830 HIGH
8.7 Oct 08

Quadratic-time denial of service in league/commonmark 2.0.0 through 2.10.1 lets unauthenticated remote attackers exhaust

CVE-2026-86432 MEDIUM
6.9 Sep 07

Quadratic memory and output amplification in league/commonmark's XmlRenderer affects all 2.x releases from 2.0.0 through

CVE-2026-86431 MEDIUM
6.9 Sep 07

Cross-site scripting in league/commonmark 2.7.0-2.9.0 allows unauthenticated attackers to inject arbitrary JavaScript in

CVE-2026-30838 MEDIUM
6.1 Mar 07

The DisallowedRawHtml extension in PHP Commonmark (league/commonmark) versions prior to 2.8.1 can be bypassed by injecti

CVE-2026-105829 MEDIUM
5.3 Oct 08

Stored cross-site scripting in league/commonmark from 1.3.0 through 2.10.1 lets any user who can post Markdown bypass th

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