Sinatra ETag头生成存在正则表达式拒绝服务漏洞

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

漏洞详情

包名 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)

CVSS v4 基础指标

  • 攻击向量: 网络
  • 攻击复杂度:
  • 攻击要求:
  • 所需权限:
  • 用户交互:
  • 脆弱系统影响 - 可用性:
  • 后续系统影响:

漏洞弱点

  • CWE-400: 不受控制的资源消耗
    • 产品未能适当控制有限资源的分配和维护,从而使攻击者能够影响资源消耗量,最终导致可用资源耗尽。
  • CWE-1333: 低效的正则表达式复杂度
    • 产品使用了具有低效(可能是指数级最坏情况计算复杂度)的正则表达式,消耗了过多的CPU周期。
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计