Rack无限制多部分前导缓冲导致DoS(内存耗尽)· CVE-2025-61770
漏洞详情
包信息
- 包管理器: 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在内存中无限制地缓冲整个多部分前导(第一个边界之前的字节)。攻击者可以发送一个大型前导后跟有效边界,导致显著的内存使用和因内存不足(OOM)条件而导致的进程终止。
技术细节
在搜索第一个边界时,解析器将传入数据附加到共享缓冲区(@sbuf.concat(content))并扫描边界模式:
|
|
如果尚未找到边界,解析器会无限期地继续缓冲数据。前导没有修剪或大小上限,允许攻击者在第一个边界之前发送任意数量的数据。
影响
远程攻击者可以通过在multipart/form-data请求中包含长前导来触发大的瞬时内存峰值。影响随允许的请求大小和并发性而扩展,可能由于垃圾回收导致工作进程崩溃或严重减速。
缓解措施
升级: 使用修复版本的Rack,强制执行前导大小限制(例如16 KiB)或根据RFC 2046 § 5.1.1完全丢弃前导数据。
临时解决方案:
- 在代理或Web服务器级别限制总请求体大小。
- 监控内存并设置每个进程限制以防止OOM条件。
参考信息
- GHSA-p543-xpfm-54cp
- https://nvd.nist.gov/vuln/detail/CVE-2025-61770
- rack/rack@589127f
- rack/rack@d869fed
- rack/rack@e08f78c
- https://github.com/rubysec/ruby-advisory-db/blob/master/gems/rack/CVE-2025-61770.yml
安全评分
CVSS总体评分
7.5/10(高危)
CVSS v3基础指标
- 攻击向量:网络
- 攻击复杂度:低
- 所需权限:无
- 用户交互:无
- 范围:未改变
- 机密性:无影响
- 完整性:无影响
- 可用性:高影响
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
EPSS评分
0.146%(第36百分位)
弱点分类
CWE-400: 不受控制的资源消耗
产品未能正确控制有限资源的分配和维护,从而使攻击者能够影响消耗的资源量,最终导致可用资源耗尽。