Skip to content
OpenAdvisories
Medium · 5.3 CVE-2023-26485 EUVD-2023-30291

Quadratic complexity may lead to a denial of service in cmark-gfm

Published Mar 31, 2023 · Updated Feb 11, 2025 · Assigned by GitHub_M

Description

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](https://github.com/github/cmark-gfm) is a fork of [cmark](https://github.com/commonmark/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](https://github.com/github/cmark-gfm)

Affected products

VendorProductAffectedFixed
github cmark-gfm < 0.29.0.gfm.10 —

Fixed in Linux distributions

Distributions backport fixes, so the version that fixes this vulnerability differs per release — upgrade to at least the version shown. From the distributions' security trackers and advisories.

ReleasePackageFixed inAdvisory
Debian 14 cmark-gfm 0.29.0.gfm.13-1 —
Debian 14 python-cmarkgfm 2024.11.20-1 —
Debian 14 r-cran-commonmark 1.9.1-1 —
Debian 14 ruby-commonmarker 0.23.10-1 —
Debian 13 cmark-gfm 0.29.0.gfm.13-1 —
Debian 13 python-cmarkgfm 2024.11.20-1 —
Debian 13 r-cran-commonmark 1.9.1-1 —
Debian 13 ruby-commonmarker 0.23.10-1 —
Debian 12 cmark-gfm +3 No fix yet —
ReleasePackageFixed inAdvisory
Ubuntu 26.10 cmark No fix yet —
Ubuntu 26.04 LTS cmark No fix yet —
Ubuntu 25.10 cmark No fix yet —
Ubuntu 24.04 LTS cmark No fix yet —
Ubuntu 22.04 LTS cmark No fix yet —
Show 5 more (older releases, extended support, other products)
ReleasePackageFixed inAdvisory
Ubuntu 20.04 LTS cmark No fix yet —
Ubuntu 18.04 LTS cmark No fix yet —
Ubuntu Pro 24.04 LTS cmark-gfm 0.29.0.gfm.6-6ubuntu0.24.04.1~esm1 USN-7319-1
Ubuntu Pro 22.04 LTS cmark-gfm 0.29.0.gfm.3-3ubuntu0.1~esm1 USN-7319-1
Ubuntu Pro 20.04 LTS cmark-gfm 0.29.0.gfm.0-4ubuntu0.1~esm1 USN-7319-1

Advisories 1

References