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

本文详细分析了Sinatra框架中存在的正则表达式拒绝服务漏洞,该漏洞通过ETag头值生成机制被利用,影响使用Ruby 3.2以下版本且使用etag方法的应用程序。

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基础指标

可利用性指标

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

脆弱系统影响指标

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

后续系统影响指标

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

EPSS评分

  • 得分: 0.076% (第23百分位)

弱点分析

弱点类型

  • CWE-400: 不受控制的资源消耗
  • CWE-1333: 低效的正则表达式复杂度

标识信息

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

时间线

  • 报告时间: 2025年10月10日
  • 最后更新: 2025年10月13日
  • 发布至GitHub咨询数据库: 2025年10月10日
  • 审核时间: 2025年10月10日

源代码

  • 仓库: sinatra/sinatra

致谢

  • 发现者: dentarg
  • 修复审核者: dentarg
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计