CVE-2026-34826Rack是Ruby模块化Web服务器接口。在2.2.23、3.1.21和3.2.6版本之前,Rack::Utils.get_byte_ranges解析HTTP Range头时未限制范围数量。攻击者可通过发送大量重叠的小范围请求,消耗过多CPU、内存和带宽,导致处理多部分字节范围响应的文件服务路径出现拒绝服务。
该漏洞源于Rack::Utils.get_byte_ranges函数在处理HTTP Range请求头时,缺乏对单个请求中范围数量的限制。尽管针对CVE-2024-26141的修复限制了请求的总字节数,但并未限制Range头的片段数量。攻击者可以利用这一缺陷,构造包含大量重叠微小范围(如重复数千次“0-0”)的恶意HTTP请求。当服务器尝试解析这些范围并生成相应的多部分字节范围响应(multipart/byteranges)时,会消耗不成比例的CPU周期用于解析,以及大量内存和I/O带宽用于构建响应体。这种资源耗尽会导致服务响应变慢甚至超时崩溃,从而形成拒绝服务攻击,严重影响依赖Rack进行文件服务的应用程序可用性。