Rack框架曝内存耗尽DoS漏洞,URL编码表单解析存在风险

本文详细分析了Rack框架中存在的安全漏洞CVE-2025-61919,该漏洞允许攻击者通过发送超大URL编码表单数据导致内存耗尽拒绝服务,涉及技术细节包括请求体解析机制和内存分配原理。

Rack框架内存耗尽DoS漏洞分析

漏洞概述

Rack在处理application/x-www-form-urlencoded内容类型的请求时存在安全漏洞,攻击者可通过发送无限制的大型请求体导致内存耗尽,从而引发拒绝服务(DoS)。

技术细节

受影响版本

  • < 2.2.20
  • >= 3.0, < 3.1.18
  • >= 3.2, < 3.2.3

漏洞原理

当处理非多部分表单提交时,Rack的请求解析器执行以下操作:

1
form_vars = get_header(RACK_INPUT).read

由于read方法在没有参数的情况下被调用,整个请求体会被完整加载到Ruby字符串中。这一操作发生在查询参数解析或任何参数限制执行之前,导致没有上游请求体大小限制的Rack应用可能遭受无限制的内存分配。

影响分析

攻击者可以发送大型的application/x-www-form-urlencoded请求体来消耗进程内存,导致系统变慢或被操作系统终止(OOM)。影响程度与请求大小和并发量呈线性关系,即使配置了解析限制,该问题也会在这些限制生效前发生。

修复方案

补丁版本

  • 2.2.20
  • 3.1.18
  • 3.2.3

缓解措施

  1. 更新到已修复的Rack版本,该版本使用query_parser.bytesize_limit强制执行表单参数限制
  2. 在代理或Web服务器层强制执行严格的最大请求体大小(如Nginx的client_max_body_size、Apache的LimitRequestBody

参考信息

  • GHSA-6xw4-3v39-52mm
  • CVSS评分:7.5(高危)
  • 弱点分类:CWE-400(不受控制的资源消耗)
  • 攻击向量:网络
  • 影响:可用性高
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计