CVE-2026-34829
Rack's multipart parsing without Content-Length header allows unbounded chunked file uploads
Impact
Rack is a modular Ruby web server interface. Prior to versions 2.2.23, 3.1.21, and 3.2.6, Rack::Multipart::Parser only wraps the request body in a BoundedIO when CONTENT_LENGTH is present. When a multipart/form-data request is sent without a Content-Length header, such as with HTTP chunked transfer encoding, multipart parsing continues until end-of-stream with no total size limit. For file parts, the uploaded body is written directly to a temporary file on disk rather than being constrained by the buffered in-memory upload limit. An unauthenticated attacker can therefore stream an arbitrarily large multipart file upload and consume unbounded disk space. This results in a denial of service condition for Rack applications that accept multipart form data. This issue has been patched in versions 2.2.23, 3.1.21, and 3.2.6.
Affected packages
| Ecosystem | Package | Affected | Fixed in |
|---|---|---|---|
| rubygems | rack | < 2.2.23 | 2.2.23 |
Affected products
| Vendor | Product | Affected versions |
|---|---|---|
| Rack | Rack | before 2.2.23 from 3.0.0 before 3.1.21 from 3.2.0 before 3.2.6 |
Weakness classification
References
- NVD record
- CVE.org record
- GitHub advisory
- https://github.com/advisories/GHSA-8vqr-qjwx-82mw
- https://github.com/rack/rack/security/advisories/GHSA-8vqr-qjwx-82mw
- https://nvd.nist.gov/vuln/detail/CVE-2026-34829
- https://github.com/rubysec/ruby-advisory-db/blob/master/gems/rack/CVE-2026-34829.yml
- https://access.redhat.com/security/cve/CVE-2026-34829
- https://bugzilla.redhat.com/show_bug.cgi?id=2454488
- https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-34829.json