Rack多部分数据前导缓冲区漏洞导致内存耗尽型DoS攻击

本文详细分析了CVE-2025-61770漏洞,该漏洞存在于Rack的多部分数据解析器中,由于对前导数据缺乏大小限制,攻击者可通过发送大量前导数据导致内存耗尽,造成拒绝服务攻击。文章包含漏洞技术细节、影响范围和修复方案。

Rack无限制多部分前导缓冲导致DoS(内存耗尽)· CVE-2025-61770

漏洞详情

摘要

Rack::Multipart::Parser在内存中无限制地缓冲整个多部分前导数据(第一个边界之前的字节)。攻击者可以发送一个大型前导数据后跟有效边界,导致显著的内存使用和因内存不足(OOM)条件而导致的进程终止。

技术细节

在搜索第一个边界时,解析器将传入数据附加到共享缓冲区(@sbuf.concat(content))并扫描边界模式:

1
@sbuf.scan_until(@body_regex)

如果尚未找到边界,解析器会继续无限期地缓冲数据。前导数据没有任何修剪或大小上限,允许攻击者在第一个边界之前发送任意数量的数据。

影响

远程攻击者可以通过在multipart/form-data请求中包含长前导数据来触发大的瞬时内存峰值。影响随着允许的请求大小和并发性而扩展,可能导致工作进程崩溃或因垃圾收集而严重减速。

修复方案

升级:使用已修复的Rack版本,该版本强制执行前导数据大小限制(例如16 KiB)或根据RFC 2046 § 5.1.1完全丢弃前导数据。

临时解决方案

  • 在代理或Web服务器级别限制总请求体大小
  • 监控内存并设置每个进程的限制以防止OOM条件

受影响版本

包名 受影响版本 已修复版本
rack < 2.2.19 2.2.19
rack >= 3.1, < 3.1.17 3.1.17
rack >= 3.2, < 3.2.2 3.2.2

参考链接

安全评分

CVSS v3.1 评分:7.5(高危)

基础指标:

  • 攻击向量:网络(AV:N)
  • 攻击复杂度:低(AC:L)
  • 权限要求:无(PR:N)
  • 用户交互:无(UI:N)
  • 范围:未改变(S:U)
  • 机密性影响:无(C:N)
  • 完整性影响:无(I:N)
  • 可用性影响:高(A:H)

弱点分类

CWE-400:不受控制的资源消耗

产品未正确控制有限资源的分配和维护,从而使攻击者能够影响消耗的资源量,最终导致可用资源耗尽。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计