CVE-2023-26485
Quadratic complexity may lead to a denial of service in cmark-gfm
cmark-gfm is GitHub's fork of cmark, a CommonMark parsing and rendering library and program in C. A polynomial time complexity issue in cmark-gfm may lead to unbounded resource exhaustion and subsequent denial of service. This CVE covers quadratic complexity issues when parsing text which leads with either large numbers of _ characters. This issue has been addressed in version 0.29.0.gfm.10. Users are advised to upgrade. Users unable to upgrade should validate that their input comes from trusted sources.
Impact
A polynomial time complexity issue in cmark-gfm may lead to unbounded resource exhaustion and subsequent denial of service.
Proof of concept
$ ~/cmark-gfm$ python3 -c 'pad = "_" * 100000; print(pad + "." + pad, end="")' | time ./build/src/cmark-gfm --to plaintext
Increasing the number 10000 in the above commands causes the running time to increase quadratically.
Patches
This vulnerability have been patched in 0.29.0.gfm.10.
Note on cmark and cmark-gfm
XXX: TBD
cmark-gfm is a fork of cmark that adds the GitHub Flavored Markdown extensions. The two codebases have diverged over time, but share a common core. These bugs affect both cmark and cmark-gfm.
Credit
We would like to thank @gravypod for reporting this vulnerability.
References
https://en.wikipedia.org/wiki/Time_complexity
For more information
If you have any questions or comments about this advisory:
- Open an issue in github/cmark-gfm
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- Low
Exploit likelihood
What each source reports
CVE List Score used
5.3
Quadratic complexity may lead to a denial of service in cmark-gfm
cmark-gfm is GitHub's fork of cmark, a CommonMark parsing and rendering library and program in C. A polynomial time complexity issue in cmark-gfm may lead to unbounded resource exhaustion and subsequent denial of service. This CVE covers quadratic complexity issues when parsing text which leads with either large numbers of _ characters. This issue has been addressed in version 0.29.0.gfm.10. Users are advised to upgrade. Users unable to upgrade should validate that their input comes from trusted sources.
Impact
A polynomial time complexity issue in cmark-gfm may lead to unbounded resource exhaustion and subsequent denial of service.
Proof of concept
$ ~/cmark-gfm$ python3 -c 'pad = "_" * 100000; print(pad + "." + pad, end="")' | time ./build/src/cmark-gfm --to plaintext
Increasing the number 10000 in the above commands causes the running time to increase quadratically.
Patches
This vulnerability have been patched in 0.29.0.gfm.10.
Note on cmark and cmark-gfm
XXX: TBD
cmark-gfm is a fork of cmark that adds the GitHub Flavored Markdown extensions. The two codebases have diverged over time, but share a common core. These bugs affect both cmark and cmark-gfm.
Credit
We would like to thank @gravypod for reporting this vulnerability.
References
https://en.wikipedia.org/wiki/Time_complexity
For more information
If you have any questions or comments about this advisory:
- Open an issue in github/cmark-gfm
- Record
CVE-2023-26485- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L - Weakness
- CWE-400, CWE-407
- Updated
- 2026-11-02
EUVDEUVD-2023-30291
5.3
cmark-gfm is GitHub's fork of cmark, a CommonMark parsing and rendering library and program in C. A polynomial time complexity issue in cmark-gfm may lead to unbounded resource exhaustion and subsequent denial of service. This CVE covers quadratic complexity issues when parsing text which leads with either large numbers of _ characters. This issue has been addressed in version 0.29.0.gfm.10. Users are advised to upgrade. Users unable to upgrade should validate that their input comes from trusted sources.
Impact
A polynomial time complexity issue in cmark-gfm may lead to unbounded resource exhaustion and subsequent denial of service.
Proof of concept
$ ~/cmark-gfm$ python3 -c 'pad = "_" * 100000; print(pad + "." + pad, end="")' | time ./build/src/cmark-gfm --to plaintext
Increasing the number 10000 in the above commands causes the running time to increase quadratically.
Patches
This vulnerability have been patched in 0.29.0.gfm.10.
Note on cmark and cmark-gfm
XXX: TBD
cmark-gfm is a fork of cmark that adds the GitHub Flavored Markdown extensions. The two codebases have diverged over time, but share a common core. These bugs affect both cmark and cmark-gfm.
Credit
We would like to thank @gravypod for reporting this vulnerability.
References
https://en.wikipedia.org/wiki/Time_complexity
For more information
If you have any questions or comments about this advisory:
- Open an issue in github/cmark-gfm
- Record
EUVD-2023-30291- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L - Updated
- 2026-11-03
NVD
5.3
cmark-gfm is GitHub's fork of cmark, a CommonMark parsing and rendering library and program in C. A polynomial time complexity issue in cmark-gfm may lead to unbounded resource exhaustion and subsequent denial of service. This CVE covers quadratic complexity issues when parsing text which leads with either large numbers of _ characters. This issue has been addressed in version 0.29.0.gfm.10. Users are advised to upgrade. Users unable to upgrade should validate that their input comes from trusted sources.
Impact
A polynomial time complexity issue in cmark-gfm may lead to unbounded resource exhaustion and subsequent denial of service.
Proof of concept
$ ~/cmark-gfm$ python3 -c 'pad = "_" * 100000; print(pad + "." + pad, end="")' | time ./build/src/cmark-gfm --to plaintext
Increasing the number 10000 in the above commands causes the running time to increase quadratically.
Patches
This vulnerability have been patched in 0.29.0.gfm.10.
Note on cmark and cmark-gfm
XXX: TBD
cmark-gfm is a fork of cmark that adds the GitHub Flavored Markdown extensions. The two codebases have diverged over time, but share a common core. These bugs affect both cmark and cmark-gfm.
Credit
We would like to thank @gravypod for reporting this vulnerability.
References
https://en.wikipedia.org/wiki/Time_complexity
For more information
If you have any questions or comments about this advisory:
- Open an issue in github/cmark-gfm
- Record
CVE-2023-26485- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L - CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-400, CWE-407
- Updated
- 2026-11-02
OSV
5.3
Quadratic complexity may lead to a denial of service in cmark-gfm
cmark-gfm is GitHub's fork of cmark, a CommonMark parsing and rendering library and program in C. A polynomial time complexity issue in cmark-gfm may lead to unbounded resource exhaustion and subsequent denial of service. This CVE covers quadratic complexity issues when parsing text which leads with either large numbers of _ characters. This issue has been addressed in version 0.29.0.gfm.10. Users are advised to upgrade. Users unable to upgrade should validate that their input comes from trusted sources.
Impact
A polynomial time complexity issue in cmark-gfm may lead to unbounded resource exhaustion and subsequent denial of service.
Proof of concept
$ ~/cmark-gfm$ python3 -c 'pad = "_" * 100000; print(pad + "." + pad, end="")' | time ./build/src/cmark-gfm --to plaintext
Increasing the number 10000 in the above commands causes the running time to increase quadratically.
Patches
This vulnerability have been patched in 0.29.0.gfm.10.
Note on cmark and cmark-gfm
XXX: TBD
cmark-gfm is a fork of cmark that adds the GitHub Flavored Markdown extensions. The two codebases have diverged over time, but share a common core. These bugs affect both cmark and cmark-gfm.
Credit
We would like to thank @gravypod for reporting this vulnerability.
References
https://en.wikipedia.org/wiki/Time_complexity
For more information
If you have any questions or comments about this advisory:
- Open an issue in github/cmark-gfm
- Record
CVE-2023-26485- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L - Weakness
- CWE-400, CWE-407
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2023-26485
7.5
cmark-gfm is GitHub's fork of cmark, a CommonMark parsing and rendering library and program in C. A polynomial time complexity issue in cmark-gfm may lead to unbounded resource exhaustion and subsequent denial of service. This CVE covers quadratic complexity issues when parsing text which leads with either large numbers of _ characters. This issue has been addressed in version 0.29.0.gfm.10. Users are advised to upgrade. Users unable to upgrade should validate that their input comes from trusted sources. ### Impact A polynomial time complexity issue in cmark-gfm may lead to unbounded resource exhaustion and subsequent denial of service. ### Proof of concept $ ~/cmark-gfm$ python3 -c 'pad = "_" * 100000; print(pad + "." + pad, end="")' | time ./build/src/cmark-gfm --to plaintext Increasing the number 10000 in the above commands causes the running time to increase quadratically. ### Patches This vulnerability have been patched in 0.29.0.gfm.10. ### Note on cmark and cmark-gfm XXX: TBD cmark-gfm is a fork of cmark that adds the GitHub Flavored Markdown extensions. The two codebases have diverged over time, but share a common core. These bugs affect both cmark and cmark-gfm. ### Credit We would like to thank @gravypod for reporting this vulnerability. ### References https://en.wikipedia.org/wiki/Time_complexity ### For more information If you have any questions or comments about this advisory: * Open an issue in github/cmark-gfm
- Record
DEBIAN-CVE-2023-26485- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVUBUNTU-CVE-2023-26485
5.3
cmark-gfm is GitHub's fork of cmark, a CommonMark parsing and rendering library and program in C. A polynomial time complexity issue in cmark-gfm may lead to unbounded resource exhaustion and subsequent denial of service. This CVE covers quadratic complexity issues when parsing text which leads with either large numbers of _ characters. This issue has been addressed in version 0.29.0.gfm.10. Users are advised to upgrade. Users unable to upgrade should validate that their input comes from trusted sources. ### Impact A polynomial time complexity issue in cmark-gfm may lead to unbounded resource exhaustion and subsequent denial of service. ### Proof of concept $ ~/cmark-gfm$ python3 -c 'pad = "_" * 100000; print(pad + "." + pad, end="")' | time ./build/src/cmark-gfm --to plaintext Increasing the number 10000 in the above commands causes the running time to increase quadratically. ### Patches This vulnerability have been patched in 0.29.0.gfm.10. ### Note on cmark and cmark-gfm XXX: TBD cmark-gfm is a fork of cmark that adds the GitHub Flavored Markdown extensions. The two codebases have diverged over time, but share a common core. These bugs affect both cmark and cmark-gfm. ### Credit We would like to thank @gravypod for reporting this vulnerability. ### References https://en.wikipedia.org/wiki/Time_complexity ### For more information If you have any questions or comments about this advisory: * Open an issue in github/cmark-gfm
- Record
UBUNTU-CVE-2023-26485- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L - CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVRSEC-2023-8 No score
Denial of Service (DoS) vulnerabilities
cmark-gfm, GitHub's extended version of the CommonMark library in C, suffers from multiple vulnerabilities affecting versions prior to 0.29.0.gfm.12. Various issues, including polynomial time complexity in multiple components like autolink extension, handle_close_bracket, and parsing of certain text patterns (leading >, -, _), may lead to unbounded resource exhaustion and denial of service. An out-of-bounds read in the validate_protocol function was also identified but is considered less harmful. Patches are available in versions 0.29.0.gfm.7, 0.29.0.gfm.10, and 0.29.0.gfm.12. Upgrading is advised, and users unable to upgrade should validate input from trusted sources.
- Record
RSEC-2023-8- Updated
- 2026-11-02
OSVUSN-7319-1 No score
cmark-gfm vulnerabilities
It was discovered that cmark-gfm's autolink extension did not correctly handle parsing large inputs. An attacker could possibly use this issue to cause a denial of service. This issue only affected Ubuntu 20.04 LTS and Ubuntu 22.04 LTS. (CVE-2022-39209)
It was discovered that cmark-gfm did not correctly handle parsing large inputs. An attacker could possibly use this issue to cause a denial of service. This issue only affected Ubuntu 22.04 LTS, Ubuntu 24.04 LTS and Ubuntu 24.10. (CVE-2023-22483)
It was discovered that cmark-gfm did not correctly handle parsing large inputs. An attacker could possibly use this issue to cause a denial of service. This issue only affected Ubuntu 24.04 LTS and Ubuntu 24.10. (CVE-2023-22484)
It was discovered that cmark-gfm did not correctly handle parsing large inputs. An attacker could possibly use this issue to cause a denial of service. (CVE-2023-22486, CVE-2023-26485)
- Record
USN-7319-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
cmark-gfmDebian:12 |
All versions, plus listed versions 0.29.0.gfm.13-10.29.0.gfm.13-20.29.0.gfm.13-30.29.0.gfm.13-40.29.0.gfm.13-70.29.0.gfm.13-7.10.29.0.gfm.6-6 |
None known |
cmark-gfmDebian:13 |
before 0.29.0.gfm.13-1 | 0.29.0.gfm.13-1 |
cmark-gfmDebian:14 |
before 0.29.0.gfm.13-1 | 0.29.0.gfm.13-1 |
python-cmarkgfmDebian:12 |
All versions, plus listed versions 0.8.0-32024.11.20-12025.10.22-12025.10.22-2 |
None known |
python-cmarkgfmDebian:13 |
before 2024.11.20-1 | 2024.11.20-1 |
python-cmarkgfmDebian:14 |
before 2024.11.20-1 | 2024.11.20-1 |
r-cran-commonmarkDebian:12 |
All versions, plus listed versions 1.8.1-11.9.0-11.9.1-11.9.2-11.9.2-2 Show 4 moreShow less1.9.5-12.0.0-12.0.0-22.0.0-3 |
None known |
r-cran-commonmarkDebian:13 |
before 1.9.1-1 | 1.9.1-1 |
r-cran-commonmarkDebian:14 |
before 1.9.1-1 | 1.9.1-1 |
ruby-commonmarkerDebian:12 |
All versions, plus listed versions 0.23.10-10.23.6-10.23.9-12.10.0-12.10.0-2 Show 5 moreShow less2.10.1-12.8.3-12.8.3-22.8.3-32.8.3-4 |
None known |
Show 16 moreShow less
| Package | Affected | Fixed |
|---|---|---|
ruby-commonmarkerDebian:13 |
before 0.23.10-1 | 0.23.10-1 |
ruby-commonmarkerDebian:14 |
before 0.23.10-1 | 0.23.10-1 |
commonmarkCRAN From an advisory covering 7 CVEs |
0.2 up to 1.9.2, plus listed versions 0.40.50.60.70.8 Show 14 moreShow less0.91.01.11.21.41.51.61.71.81.91.9.11.8.01.8.11.9.0 |
1.9.2 |
cmarkUbuntu:18.04:LTS |
All versions, plus listed versions 0.26.1-1 |
None known |
cmarkUbuntu:20.04:LTS |
All versions, plus listed versions 0.28.3-10.29.0-1ubuntu20.29.0-2 |
None known |
cmark-gfmUbuntu:Pro:20.04:LTS |
before 0.29.0.gfm.0-4ubuntu0.1~esm1, plus listed versions 0.28.3.gfm.20-30.29.0.gfm.0-30.29.0.gfm.0-4 |
0.29.0.gfm.0-4ubuntu0.1~esm1 |
cmarkUbuntu:22.04:LTS |
All versions, plus listed versions 0.29.0-40.30.2-30.30.2-40.30.2-5 |
None known |
cmark-gfmUbuntu:Pro:22.04:LTS |
before 0.29.0.gfm.3-3ubuntu0.1~esm1, plus listed versions 0.29.0.gfm.0-60.29.0.gfm.2-10.29.0.gfm.2-1+really.0.29.0.gfm.0ubuntu10.29.0.gfm.2-20.29.0.gfm.3-3 |
0.29.0.gfm.3-3ubuntu0.1~esm1 |
cmarkUbuntu:24.04:LTS |
All versions, plus listed versions 0.30.2-60.30.2-6build1 |
None known |
cmark-gfmUbuntu:Pro:24.04:LTS |
before 0.29.0.gfm.6-6ubuntu0.24.04.1~esm1, plus listed versions 0.29.0.gfm.6-60.29.0.gfm.6-6build1 |
0.29.0.gfm.6-6ubuntu0.24.04.1~esm1 |
cmarkUbuntu:25.10 |
All versions, plus listed versions 0.30.2-6build1 |
None known |
cmarkUbuntu:26.10 |
All versions, plus listed versions 0.30.2-6build2 |
None known |
cmarkUbuntu:26.04:LTS |
All versions, plus listed versions 0.30.2-6build10.30.2-6build2 |
None known |
cmark-gfmUbuntu:Pro:20.04:LTS From an advisory covering 5 CVEs |
before 0.29.0.gfm.0-4ubuntu0.1~esm1, plus listed versions 0.28.3.gfm.20-30.29.0.gfm.0-30.29.0.gfm.0-4 |
0.29.0.gfm.0-4ubuntu0.1~esm1 |
cmark-gfmUbuntu:Pro:22.04:LTS From an advisory covering 5 CVEs |
before 0.29.0.gfm.3-3ubuntu0.1~esm1, plus listed versions 0.29.0.gfm.0-60.29.0.gfm.2-10.29.0.gfm.2-1+really.0.29.0.gfm.0ubuntu10.29.0.gfm.2-20.29.0.gfm.3-3 |
0.29.0.gfm.3-3ubuntu0.1~esm1 |
cmark-gfmUbuntu:Pro:24.04:LTS From an advisory covering 5 CVEs |
before 0.29.0.gfm.6-6ubuntu0.24.04.1~esm1, plus listed versions 0.29.0.gfm.6-60.29.0.gfm.6-6build1 |
0.29.0.gfm.6-6ubuntu0.24.04.1~esm1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| aliases, published | EUVD | |
| first indexed | CVE List, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2023-26485 is a medium vulnerability (CVSS 5.3) in Github Cmark-gfm, published March 31, 2023. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 1.03%, the 63rd percentile. Fixed in cmark-gfm 0.29.0.gfm.13-1.
References
github.com/github/cmark-gfm/security/advisories/GHSA-r8vr-c48j-fcc5
github.com/github/cmark-gfm/commit/07a66c9bc341f902878e37d7da8647d6ef150987
github.com/CVEProject/cvelistV5/tree/main/cves/2023/26xxx/CVE-2023-26485.json
nvd.nist.gov/vuln/detail/CVE-2023-26485
security-tracker.debian.org/tracker/CVE-2023-26485
security-tracker.debian.org/tracker/CVE-2023-37463
Show 13 moreShow less
security-tracker.debian.org/tracker/CVE-2023-24824
security-tracker.debian.org/tracker/CVE-2023-22486
security-tracker.debian.org/tracker/CVE-2023-22485
security-tracker.debian.org/tracker/CVE-2023-22484
security-tracker.debian.org/tracker/CVE-2023-22483
github.com/r-lib/commonmark/issues/26
ubuntu.com/security/CVE-2023-26485
cve.org/CVERecord?id=CVE-2023-26485
ubuntu.com/security/notices/USN-7319-1
ubuntu.com/security/CVE-2022-39209
ubuntu.com/security/CVE-2023-22483
ubuntu.com/security/CVE-2023-22484
ubuntu.com/security/CVE-2023-22486