HexBrain

Internet Bug Bounty · Report #1614330

CVE-2022-32206: HTTP compression denial of service

Validstatus
mediumseverity
$2,400bounty
8upvotes
27 Jun 2022disclosed

Summary

CVE-2022-32206: HTTP compression denial of service Project curl Security Advisory, June 27th 2022

VULNERABILITY curl supports "chained" HTTP compression algorithms, meaning that a server response can be compressed multiple times and potentially with different algorithms. The number of acceptable "links" in this "decompression chain" was unbounded, allowing a malicious server to insert a virtually unlimited number of compression steps.

The use of such a decompression chain could result in a "malloc bomb", making curl end up spending enormous amounts of allocated heap memory, or trying to and returning out of memory errors.

We are not aware of any exploit of this flaw.

INFO CVE-2022-32206 was introduced in commit dbcced8e32b50c06, shipped in curl 7.57.0.

Automatic decompression of content needs to be enabled per transfer. It is disabled by default and then nothing bad happens.

This flaw exists with just one of the compression algorithms built-in (gzip, brotli or zstd), but the individual algorithms has different "exploding" powers.

Both Content-Encoding: and Transfer-Encoding: are affected. The vulnerability is more emphasized over HTTP/1 than HTTP/2 due to different curl internal header limits.

CWE-770: Allocation of Resources Without Limits or Throttling

Severity: Medium

AFFECTED VERSIONS Affected versions: curl 7.57.0 to and including 7.83.1 Not affected versions: curl < 7.57.0 and curl >= 7.84.0 libcurl is used by many applications, but not always advertised as such!

THE SOLUTION The amount of accepted "chained" algorithms is now capped to 5.

A fix for CVE-2022-32206

RECOMMENDATIONS A - Upgrade curl to version 7.84.0

B - Apply the patch to your local version

C - Do not enable automatic decompression

TIMELINE This issue was reported to the curl project on May 15, 2022. We contacted distros@ openwall on June 20.

libcurl 7.84.0 was released on June 27 2022, coordinated with the publication of this advisory.

CREDITS This issue was reported by Harry Sintonen. Patched by Daniel Stenberg.

Thanks a lot!

Security Advisory: https://curl.se/docs/CVE-2022-32206.html

How it was found

curl supports "chained" HTTP compression algorithms, meaning that a server response can be compressed multiple times and potentially with different algorithms. The number of acceptable "links" in this "decompression chain" was unbounded, allowing a malicious server to insert a virtually unlimited number of compression steps.

The use of such a decompression chain could result in a "malloc bomb", making curl end up spending enormous amounts of allocated heap memory, or trying to and returning out of memory errors.

Impact

Denial of service

This report was disclosed publicly on HackerOne and belongs to its author and the program. See the original