Vulnerability · CVE-2026-105830
league/commonmark: Quadratic-time denial of service in the GitHub Flavored Markdown Table extension block-start scan
Published Sep 30, 2026 · catalog updated Oct 9, 2026 · league/commonmark: Quadratic-time denial of
Check if you run it
No confirmed exploitation is on record for CVE-2026-105830. EPSS is 0.37%. Act only if a listed version of league/commonmark: Quadratic-time denial of is installed.
Gaps on this record
- The stored product name is a package slug. The name on this page is taken from the title (league/commonmark: Quadratic-time denial of).
- No vendor fix or required action is stored. Compare the linked advisory before you change production.
- Severity
- High7.5
- Known exploitation
- Not in CISA/VulnCheck KEV
- EPSS
- 0.37%
- Remediation
- Advisory link
- Affected products
- Packagist league/commonmark
## Summary 's GitHub Flavored Markdown Table extension registers as a block-start parser. While a paragraph is the active block, the core block parser calls on every non-blank line. Its first action fetches the entire growing paragraph buffer via and runs across all of it. For a paragraph of M pipe-free lines, line k rescans about k lines of buffer, so total work is 1+2+...+M, which is O(M^2). An unauthenticated user who submits a single large paragraph of pipe-free lines that do not begin with a letter (see Attack Chain) to any service that converts untrusted Markdown with (or any environment that enables ) drives seconds to tens of seconds of single-core CPU that grows quadratically with body size, enough to exhaust worker processes and deny service. ## Root Cause The GFM table detector performs a per-line "quick check" against the whole accumulated paragraph rather than only the portion that could form a table header. A paragraph never closes while non-blank lines keep arriving, so its buffer grows without bound, and the quick check rescans the entire buffer on each line. Only the paragraph's last line can ever be a table header (it is extracted separately via / ), so scanning the full multi-line buffer for a pipe on every line is unnecessary work and creates quadratic time complexity. There is no input-size cap and the default nesting limit is not reached, so nothing bounds the scan. ## Impact An unauthenticated, remote attacker with no user interaction can cause denial of service against any application that renders untrusted Markdown with the GitHub Flavored Markdown converter or any configuration that enables the Table extension (the default GFM bundle enables it). A single request carrying a large paragraph of pipe-free, blank-line-free lines that do not begin with a letter consumes CPU proportional to the square of the input size: measured runs show roughly 4x CPU growth per input doubling. A body of a few megabytes ties up a worker for seconds to tens of s
Are you affected?
Enter the version you run. The result uses only the ranges stored on this record.
The check returns affected, not affected, or incomplete. It does not guess a version that is missing from the record.
- Packagist league/commonmark2.0.0 → 2.10.2
How to fix CVE-2026-105830
Recommended remediation
A patch or advisory reference is linked. Open the original publisher for availability by product version.
Official advisories
What to do
Three questions, each answered from this record only. Confirm the vendor advisory before you patch.
Should you patch?
No confirmed exploitation is on record for CVE-2026-105830. EPSS is 0.37%. Act only if a listed version of league/commonmark: Quadratic-time denial of is installed.
Which versions are affected?
Compare what you have installed with 2.0.0 → 2.10.2. Compare the installed version with the linked vendor advisory before you change production.
What should an analyst verify?
CWE-400: Uncontrolled Resource Consumption; CWE-407. EPSS 0.37%. There is no CISA KEV listing. No Exploit-DB or Metasploit reference is linked. Use the source links for the original advisory.
Code
The project this record applies to. Exploit listings stay in References.
Timeline
Detection, updates, and resolution for this record.
Sep 30, 2026 · Catalog
Detected
## Summary 's GitHub Flavored Markdown Table extension registers as a block-start parser. While a paragraph is the active block, the core block parser calls on every non-blank line. Its first action fetches the entire growing paragraph buffer via and runs across all of it. For a paragraph of M pipe-free lines, line k rescans about k lines of buffer, so total work is 1+2+...+M, which is O(M^2). An
Oct 9, 2026 · Catalog
Fix available
Packagist league/commonmark 2.0.0 → 2.10.2
Oct 9, 2026 · GitHub Advisory Database
Fix available
league/commonmark fixed in 2.10.2
Oct 9, 2026 · GitHub Advisory Database
Fix available
league/commonmark fixed in 2.10.2
Oct 9, 2026 · Catalog
Updated
## Summary 's GitHub Flavored Markdown Table extension registers as a block-start parser. While a paragraph is the active block, the core block parser calls on every non-blank line. Its first action fetches the entire growing paragraph buffer via and runs across all of it. For a paragraph of M pipe-free lines, line k rescans about k lines of buffer, so total work is 1+2+...+M, which is O(M^2). An
Sources
- CVE.orgVulnerability recordCVE-2026-105830
Official CVE identifier
cve.org - FIRST EPSSExploitation probabilityCVE-2026-105830
30-day exploitation probability 0.4%
first.org - GitHub Advisory DatabasePackage advisoryGHSA-3q6v-r5mr-hxv8
GitHub Advisory Database record mirrored by OSV.
github.com - OpenSSF OSV / OSV ScannerPackage advisoryGHSA-3q6v-r5mr-hxv8
league/commonmark: Quadratic-time denial of service in the GitHub Flavored Markdown Table extension block-start scan
osv.dev
References
Freshness
Last verified in this catalog Oct 18, 2026. Significant claims (KEV, EPSS, CVSS, affected ranges) come from the source rows above — open the original publisher for the authoritative advisory.