HexBrain

Internet Bug Bounty · Report #1627159

Rack CVE-2022-30122: Denial of Service Vulnerability in Rack Multipart Parsing

Validstatus
mediumseverity
$2,400bounty
9upvotes
23 Jul 2022disclosed

Summary

Description There is a possible denial of service vulnerability in the multipart parsing component of Rack. This vulnerability has been assigned the CVE identifier CVE-2022-30122.

Versions Affected: >= 1.2 Not affected: < 1.2 Fixed Versions: 2.0.9.1, 2.1.4.1, 2.2.3.1

Impact Carefully crafted multipart POST requests can cause Rack's multipart parser to take much longer than expected, leading to a possible denial of service vulnerability.

Impacted code will use Rack's multipart parser to parse multipart posts. This includes directly using the multipart parser like this:

params = Rack::Multipart.parse_multipart(env)

But it also includes reading POST data from a Rack request object like this:

p request.POST # read POST data p request.params # reads both query params and POST data

All users running an affected release should either upgrade or use one of the workarounds immediately.

Full Security Advisory: https://github.com/advisories/GHSA-hxqx-xwvh-44m2

How it was found

ReDoS in Rack::Multipart::BROKEN_QUOTED and Rack::Multipart::BROKEN_UNQUOTED.

https://groups.google.com/g/ruby-security-ann/c/L2Axto442qk

Carefully crafted multipart POST requests can cause Rack's multipart parser to take much longer than expected, leading to a possible denial of service vulnerability.

Impact

When the client sends a specially crafted header, it occur ReDoS on the server side. Servers that interpret Post data by default, like Rails, are affected.

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