Sinatra ETag头生成存在ReDoS漏洞分析

本文详细分析了Sinatra框架在ETag头生成过程中存在的正则表达式拒绝服务漏洞,影响Ruby 3.2以下版本,攻击者可通过精心构造的If-Match和If-None-Match头发起拒绝服务攻击。

Sinatra存在通过ETag头生成导致的ReDoS漏洞

漏洞详情

  • bundler
  • sinatra (RubyGems)

受影响版本 < 4.2.0

修复版本 4.2.0

漏洞描述

摘要

Sinatra的If-Match和If-None-Match头解析组件存在拒绝服务漏洞,如果在构建响应时使用etag方法且使用Ruby < 3.2版本,则会受到影响。

详细说明

精心构造的输入可能导致Sinatra中的If-Match和If-None-Match头解析花费意外长的时间,可能造成拒绝服务攻击向量。此头通常涉及生成ETag头值。任何在生成响应时使用etag方法的应用程序,如果使用低于3.2版本的Ruby,都会受到影响。

资源链接

  • sinatra/sinatra#2120 (报告)
  • sinatra/sinatra#2121 (修复)
  • sinatra/sinatra#1823 (较早的ReDoS漏洞)

参考信息

安全评分

严重程度: 低 CVSS总体评分: 2.7/10

CVSS v4基础指标

可利用性指标

  • 攻击向量: 网络
  • 攻击复杂度: 低
  • 攻击要求: 无
  • 所需权限: 无
  • 用户交互: 无

脆弱系统影响指标

  • 机密性: 无
  • 完整性: 无
  • 可用性: 低

后续系统影响指标

  • 机密性: 无
  • 完整性: 无
  • 可用性: 无

弱点分类

弱点: CWE-400 描述: 不受控制的资源消耗。产品未能正确控制有限资源的分配和维护,从而使参与者能够影响消耗的资源量,最终导致可用资源耗尽。

弱点: CWE-1333 描述: 低效的正则表达式复杂度。产品使用了具有低效、可能指数级最坏情况计算复杂度的正则表达式,消耗过多的CPU周期。

标识符

  • CVE ID: CVE-2025-61921
  • GHSA ID: GHSA-mr3q-g2mv-mr4q

源代码: sinatra/sinatra

致谢: dentarg

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