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

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

漏洞详情

包信息

  • 包管理器:bundler
  • 包名称:sinatra (RubyGems)

受影响版本

  • < 4.2.0

已修复版本

  • 4.2.0

漏洞描述

概要

Sinatra在ETag头值生成过程中存在拒绝服务漏洞。

详细说明

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

技术资源

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

参考信息

安全指标

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

CVSS v4基础指标

  • 攻击向量:网络
  • 攻击复杂度:低
  • 攻击要求:无
  • 所需权限:无
  • 用户交互:无
  • 受影响系统可用性:低

弱点类型

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

时间线

  • 2025年10月10日:由dentarg报告至sinatra/sinatra
  • 2025年10月10日:国家漏洞数据库发布
  • 2025年10月10日:GitHub咨询数据库发布并审核
  • 2025年10月13日:最后更新
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计