CVE Vulnerabilities

CVE-2023-26485

Uncontrolled Resource Consumption

Published: Mar 31, 2023 | Modified: Nov 21, 2024
CVSS 3.x
7.5
HIGH
Source:
NVD
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
CVSS 2.x
RedHat/V2
RedHat/V3
7.5 MODERATE
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Ubuntu
MEDIUM

cmark-gfm is GitHubs 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

1
$ ~/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:

Weakness

The product does not properly control the allocation and maintenance of a limited resource.

Affected Software

Name Vendor Start Version End Version
Cmark-gfm Github * 0.29.0.gfm.10 (excluding)
Cmark Ubuntu bionic *
Cmark Ubuntu focal *
Cmark Ubuntu kinetic *
Cmark Ubuntu lunar *
Cmark Ubuntu mantic *
Cmark Ubuntu oracular *
Cmark Ubuntu trusty *
Cmark Ubuntu upstream *
Cmark Ubuntu xenial *
Cmark-gfm Ubuntu esm-apps/focal *
Cmark-gfm Ubuntu esm-apps/jammy *
Cmark-gfm Ubuntu esm-apps/noble *
Cmark-gfm Ubuntu focal *
Cmark-gfm Ubuntu jammy *
Cmark-gfm Ubuntu kinetic *
Cmark-gfm Ubuntu lunar *
Cmark-gfm Ubuntu mantic *
Cmark-gfm Ubuntu noble *
Cmark-gfm Ubuntu oracular *
Cmark-gfm Ubuntu trusty *
Cmark-gfm Ubuntu upstream *
Cmark-gfm Ubuntu xenial *

Potential Mitigations

  • Mitigation of resource exhaustion attacks requires that the target system either:

  • The first of these solutions is an issue in itself though, since it may allow attackers to prevent the use of the system by a particular valid user. If the attacker impersonates the valid user, they may be able to prevent the user from accessing the server in question.

  • The second solution is simply difficult to effectively institute – and even when properly done, it does not provide a full solution. It simply makes the attack require more resources on the part of the attacker.

References