漏洞详情
包管理器: bundler
受影响包: rack (RubyGems)
受影响版本:
- < 2.2.19
-
= 3.1, < 3.1.17
-
= 3.2, < 3.2.2
已修复版本:
- 2.2.19
- 3.1.17
- 3.2.2
描述
摘要 Rack::Multipart::Parser在解析多部分请求时,如果某个部分的头部块未能以必需的空行(CRLFCRLF)终止,会持续累积无限制的数据。解析器会不断将接收到的字节追加到内存中,没有大小上限,这使得远程攻击者能够耗尽内存并导致拒绝服务(DoS)。
细节
在读取多部分头部时,解析器使用以下代码等待终止符:
@sbuf.scan_until(/(.*?\r\n)\r\n/m)
如果终止符从未出现,它会无限期地继续追加数据(@sbuf.concat(content))。对于累积的头部字节数没有限制,因此单个格式错误的部分就能消耗与请求主体大小成比例的内存。
影响 攻击者可以通过发送不完整的多部分头部来触发高内存使用,导致进程终止(内存不足)或严重性能下降。其影响程度随请求大小限制和并发数而增加。所有处理多部分文件上传的应用程序都可能受影响。
缓解措施
- 升级到已修复的Rack版本,该版本对每个部分的头部大小设置了上限(例如,64 KiB)。
- 在此之前,可以在代理或Web服务器层(例如,使用Nginx的
client_max_body_size指令)限制最大请求大小。
参考
- GHSA-wpv5-97wm-hp9c
- https://nvd.nist.gov/vuln/detail/CVE-2025-61772
- rack/rack@589127f
- rack/rack@d869fed
- rack/rack@e08f78c
- https://github.com/rubysec/ruby-advisory-db/blob/master/gems/rack/CVE-2025-61772.yml
严重程度
高 CVSS总体评分:7.5
CVSS v3 基础指标
- 攻击向量:网络
- 攻击复杂度:低
- 所需权限:无
- 用户交互:无
- 范围:未改变
- 机密性影响:无
- 完整性影响:无
- 可用性影响:高
CVSS向量:CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
弱点 CWE-400:不受控制的资源消耗。该产品未能适当控制有限资源的分配和维护,从而使攻击者能够影响资源消耗量,最终导致可用资源耗尽。
CVE ID CVE-2025-61772
GHSA ID GHSA-wpv5-97wm-hp9c