CVE-2023-26485

Source
https://nvd.nist.gov/vuln/detail/CVE-2023-26485
Import Source
https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2023-26485.json
JSON Data
https://api.test.osv.dev/v1/vulns/CVE-2023-26485
Downstream
Related
  • GHSA-r8vr-c48j-fcc5
Published
2023-03-31T23:15:07Z
Modified
2025-09-19T14:26:46.351002Z
Severity
  • 7.5 (High) CVSS_V3 - CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H CVSS Calculator
Summary
[none]
Details

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:

References

Affected packages

Git / github.com/github/cmark-gfm

Affected ranges

Type
GIT
Repo
https://github.com/github/cmark-gfm
Events
Introduced
0 Unknown introduced commit / All previous commits are affected
Fixed

Affected versions

0.*

0.27.1.gfm.2
0.27.1.gfm.3
0.27.1.gfm.4
0.28.0.gfm.10
0.28.0.gfm.11
0.28.0.gfm.5
0.28.0.gfm.6
0.28.0.gfm.7
0.28.0.gfm.8
0.28.0.gfm.9
0.28.3.gfm.12
0.28.3.gfm.13
0.28.3.gfm.14
0.28.3.gfm.15
0.28.3.gfm.16
0.28.3.gfm.17
0.28.3.gfm.18
0.28.3.gfm.19
0.28.3.gfm.20
0.29.0.gfm.0
0.29.0.gfm.1
0.29.0.gfm.2
0.29.0.gfm.3
0.29.0.gfm.4
0.29.0.gfm.5
0.29.0.gfm.6
0.29.0.gfm.7
0.29.0.gfm.8
0.29.0.gfm.9