Skip to content

Integer overflow in table parsing extension leads to heap memory corruption

High
phillmv published GHSA-mc3g-88wq-6f4x Mar 3, 2022

Package

cmark-gfm (None)

Affected versions

> 0.28.3.gfm.21, < 0.29.0.gfm.3
< 0.28.3.gfm.21

Patched versions

0.29.0.gfm.3
0.28.3.gfm.21

Description

Impact

An integer overflow in cmark-gfm's table row parsing (table.c:row_from_string) may lead to heap memory corruption when parsing tables whose marker rows contain more than UINT16_MAX columns. The impact of this heap corruption ranges from Information Leak to Arbitrary Code Execution depending on how and where cmark-gfm is used.

If cmark-gfm is used for rendering remote user controlled markdown, this vulnerability may lead to Remote Code Execution (RCE) in applications employing affected versions of the cmark-gfm library.

Patches

This vulnerability has been patched in the following cmark-gfm releases:

  • 0.29.0.gfm.3
  • 0.28.3.gfm.21

Workarounds

The vulnerability exists in the table markdown extensions of cmark-gfm. Disabling the table extension will prevent this vulnerability from being triggered.

Acknowledgements

We would like to thank Felix Wilhelm of Google's Project Zero for reporting this vulnerability

For more information

If you have any questions or comments about this advisory:

Severity

High

CVE ID

CVE-2022-24724

Weaknesses

Integer Overflow or Wraparound

The product performs a calculation that can produce an integer overflow or wraparound when the logic assumes that the resulting value will always be larger than the original value. This occurs when an integer value is incremented to a value that is too large to store in the associated representation. When this occurs, the value may become a very small or negative number. Learn more on MITRE.