curl / Docs / Security Problems / UAF and double-free in MQTT sending

UAF and double-free in MQTT sending

Project curl Security Advisory, September 15th 2021 - Permalink

VULNERABILITY

When sending data to an MQTT server, libcurl could in some circumstances erroneously keep a pointer to an already freed memory area and both use that again in a subsequent call to send data and also free it again.

We are not aware of any case of this flaw having been exploited in the wild.

INFO

This flaw was introduced in commit 2522903b79 but since MQTT support was marked 'experimental' then and not enabled in the build by default until curl 7.73.0 (October 14, 2020) we count that as the first flawed version.

The fixed libcurl version properly clears the pointer when the data has been sent.

The Common Vulnerabilities and Exposures (CVE) project has assigned the name CVE-2021-22945 to this issue.

CWE-415: Double Free

Severity: Medium

AFFECTED VERSIONS

Also note that libcurl is used by many applications, and not always advertised as such.

THE SOLUTION

A fix for CVE-2021-22945

RECOMMENDATIONS

A - Upgrade curl to version 7.79.0

B - Apply the patch to your local version

C - Do not use MQTT

TIMELINE

This issue was reported to the curl project on July 19, 2021.

This advisory was posted on September 15, 2021.

CREDITS

This issue was reported and patched by z2_.

Thanks a lot!