CVE-2026-86434 PUBLISHED

commonmark 2.0.0 through 2.8.3 Denial of Service via Slug Collision

Assigner: VulnCheck
Reserved: 07.09.2026 Published: 07.09.2026 Updated: 07.09.2026

league/commonmark versions >= 2.0.0 and < 2.8.4 (patched in 2.9.0) contain a denial of service vulnerability in UniqueSlugNormalizer::normalize(), which restarts its numeric-suffix search from 1 on every slug collision, resulting in O(K^2) time complexity for K headings that collapse to the same base slug. The vulnerable path is reached when HeadingPermalinkExtension, FootnoteExtension, or TableOfContentsExtension is registered. An unauthenticated attacker can force many headings onto a single base slug (e.g., via empty ATX headings, identical heading text, or punctuation-only headings) in a small Markdown document, consuming excessive CPU and denying service.

Metrics

CVSS Vector: 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
CVSS Score: 8.7

Product Status

Vendor thephpleague
Product commonmark
Versions Default: unaffected
  • affected from 2.0.0 to 2.8.4 (excl.)
  • Version 2.8.4 is unaffected

Credits

  • GrahamCampbell finder

References

Problem Types

  • Inefficient Algorithmic Complexity CWE