Rack多部分解析器内存耗尽漏洞分析
漏洞概述
CVE-2025-61771是一个影响Rack多部分解析器的高危安全漏洞。该漏洞存在于Rack的Rack::Multipart::Parser组件中,当处理multipart/form-data请求时,解析器会将非文件表单字段(没有文件名的部分)完全缓冲在内存中作为Ruby字符串对象。
技术细节
受影响版本
< 2.2.19>= 3.1, < 3.1.17>= 3.2, < 3.2.2
已修复版本
2.2.193.1.173.2.2
漏洞机制
在 multipart 解析过程中,文件部分会被流式传输到临时文件中,但非文件部分会被缓冲到内存中:
|
|
这些内存缓冲区没有大小限制。因此,任何大型文本字段——虽然在技术上是有效的——都会在添加到params之前完全加载到进程内存中。
影响分析
攻击者可以发送大型非文件字段来触发过度内存使用。影响程度随请求大小和并发性而扩展,可能导致工作进程崩溃或严重的垃圾回收开销。所有处理multipart表单提交的Rack应用程序都会受到影响。
CVSS v3.1评分:7.5(高危)
- 攻击向量:网络
- 权限要求:无
- 用户交互:无
- 可用性影响:高
缓解措施
升级修复
使用已修复的Rack版本,该版本对非文件字段实施了合理的大小限制(例如2 MiB)。
临时解决方案
- 在Web服务器或代理层限制最大请求体大小(例如Nginx的
client_max_body_size) - 在应用程序级别验证并拒绝异常大的表单字段
参考链接
- GHSA-w9pc-fmgc-vxvw
- NVD漏洞详情:CVE-2025-61771
- Rack项目修复提交记录
- Ruby安全咨询数据库记录