CVE-2026-34826
Received Received - Intake
Denial of Service via Unrestricted Byte Range Parsing in Rack

Publication date: 2026-04-02

Last updated on: 2026-04-16

Assigner: GitHub, Inc.

Description
Rack is a modular Ruby web server interface. Prior to versions 2.2.23, 3.1.21, and 3.2.6, Rack::Utils.get_byte_ranges parses the HTTP Range header without limiting the number of individual byte ranges. Although the existing fix for CVE-2024-26141 rejects ranges whose total byte coverage exceeds the file size, it does not restrict the count of ranges. An attacker can supply many small overlapping ranges such as 0-0,0-0,0-0,... to trigger disproportionate CPU, memory, I/O, and bandwidth consumption per request. This results in a denial of service condition in Rack file-serving paths that process multipart byte range responses. This issue has been patched in versions 2.2.23, 3.1.21, and 3.2.6.
CVSS Scores
EPSS Scores
Probability:
Percentile:
Meta Information
Published
2026-04-02
Last Modified
2026-04-16
Generated
2026-05-07
AI Q&A
2026-04-02
EPSS Evaluated
2026-05-05
NVD
EUVD
Affected Vendors & Products
Showing 3 associated CPEs
Vendor Product Version / Range
rack rack From 3.0.0 (inc) to 3.1.21 (exc)
rack rack From 3.2.0 (inc) to 3.2.6 (exc)
rack rack to 2.2.23 (exc)
Helpful Resources
Exploitability
CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-400 The product does not properly control the allocation and maintenance of a limited resource.
CWE-770 The product allocates a reusable resource or group of resources on behalf of an actor without imposing any intended restrictions on the size or number of resources that can be allocated.
Attack-Flow Graph
AI Powered Q&A
How does this vulnerability affect compliance with common standards and regulations (like GDPR, HIPAA)?:

This vulnerability causes a denial of service condition by allowing an attacker to trigger excessive resource consumption on affected Rack versions. While it impacts availability, it does not affect confidentiality or integrity of data.

Because the vulnerability does not lead to unauthorized data access or modification, it does not directly violate data protection requirements under standards like GDPR or HIPAA. However, the resulting denial of service could impact system availability, which is a component of these regulations' security requirements.

Organizations relying on affected Rack versions should consider the availability impact when assessing compliance, as prolonged denial of service could affect service continuity obligations.


Can you explain this vulnerability to me?

CVE-2026-34826 is a moderate severity denial of service vulnerability in the RubyGems package "rack." It affects versions prior to 2.2.23, versions from 3.0 up to but not including 3.1.21, and versions from 3.2 up to but not including 3.2.6.

The vulnerability exists in the Rack::Utils.get_byte_ranges method, which parses the HTTP Range header for multipart byte range requests without limiting the number of individual byte ranges accepted.

Although a previous fix addressed the total byte coverage exceeding the file size, it did not restrict the count of byte ranges. An attacker can exploit this by sending a Range header with many small, overlapping byte ranges (e.g., "Range: bytes=0-0,0-0,0-0,...").

This causes excessive CPU, memory, I/O, and bandwidth consumption due to repeated multipart response generation, per-range iteration, file seek and read operations, and temporary string allocations, leading to denial of service.


How can this vulnerability impact me? :

This vulnerability allows an unauthenticated attacker to cause disproportionate resource usage on a server running vulnerable versions of Rack.

The impact includes excessive consumption of CPU, memory, I/O, and bandwidth per request, which can reduce application availability by overloading server workers and increasing garbage collection pressure.

Ultimately, this leads to a denial of service condition in Rack file-serving paths that process multipart byte range responses.


How can this vulnerability be detected on my network or system? Can you suggest some commands?

This vulnerability can be detected by monitoring HTTP requests for suspicious Range headers that contain many small, overlapping byte ranges such as repeated "0-0,0-0,0-0,..." patterns.

You can inspect incoming HTTP requests on your web server or reverse proxy logs for Range headers with an unusually high number of byte ranges.

Commands to detect such requests might include using tools like grep or tcpdump to filter HTTP headers containing suspicious Range values.

  • Example command to search web server logs for suspicious Range headers: grep -i 'Range: bytes=0-0,0-0' /var/log/nginx/access.log
  • Using tcpdump to capture HTTP traffic and filter for Range headers: tcpdump -A -s 0 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' | grep -i 'Range:'

Monitoring for high CPU, memory, or I/O usage correlated with HTTP requests containing Range headers may also help identify exploitation attempts.


What immediate steps should I take to mitigate this vulnerability?

The primary mitigation is to update the Rack package to a patched version: 2.2.23, 3.1.21, 3.2.6, or later.

Additional immediate steps include rejecting or normalizing multipart byte range requests that contain excessive numbers of ranges.

If multipart range support is not needed, disable it to prevent processing of such Range headers.

Apply request filtering or header restrictions at reverse proxies or application boundaries to limit abusive Range headers.


Ask Our AI Assistant
Need more information? Ask your question to get an AI reply (Powered by our expertise)
0/70
EPSS Chart