CVE-2026-34230Rack是一个模块化的Ruby Web服务器接口。在2.2.23、3.1.21和3.2.6版本之前,`Rack::Utils.select_best_encoding` 方法在处理包含大量通配符(*)的 `Accept-Encoding` 请求头时存在二次方时间复杂度问题。由于 `Rack::Deflater` 中间件使用该方法选择响应编码,未经身份验证的攻击者可发送包含恶意 `Accept-Encoding` 头的单个请求,导致压缩中间件路径上的CPU消耗异常,从而引发拒绝服务条件。
漏洞源于 `Rack::Utils.select_best_encoding` 方法中对 `Accept-Encoding` 请求头的解析逻辑存在缺陷。当请求头中包含大量通配符(*)时,该方法的处理时间复杂度呈二次方增长(O(n^2))。`Rack::Deflater` 组件依赖此方法来确定最佳响应编码。攻击者无需认证和交互,只需构造一个包含超长通配符序列的 `Accept-Encoding` 头发送给服务器。服务器在解析该请求头时,CPU资源将被大量占用,导致服务响应缓慢甚至完全不可用,从而实现拒绝服务攻击。此漏洞利用了算法效率低下的问题,极易导致单点资源耗尽。