Rack框架惊现信息泄露漏洞:攻击者可绕过代理访问控制

本文详细介绍了CVE-2025-61780,一个存在于Rack的Rack::Sendfile组件中的潜在信息泄露漏洞。该漏洞允许攻击者通过构造特定的HTTP头部,诱导中间件向代理发送错误指令,从而绕过代理级别的访问限制,访问本应受保护的应用内部端点。

Rack存在潜在信息泄露漏洞 · CVE-2025-61780 · GitHub咨询数据库

漏洞详情

  • bundler
  • rack (RubyGems)

受影响版本

  • < 2.2.20
  • >= 3.0, < 3.1.18
  • >= 3.2, < 3.2.3

已修补版本

  • 2.2.20
  • 3.1.18
  • 3.2.3

描述

概述 当运行在支持 x-sendfile 头部的代理(如 Nginx)后方时,Rack::Sendfile 中存在一个潜在的信息泄露漏洞。特制的头部可能导致 Rack::Sendfile 与代理错误通信并触发非预期的内部请求,可能绕过代理级别的访问限制。

详情 当 Rack::Sendfile 从客户端接收到不受信任的 x-sendfile-typex-accel-mapping 头部时,它会将其解释为代理配置指令。这可能导致中间件向代理发送“重定向”响应,促使代理重新发出一个新的内部请求,而该请求不受代理访问控制策略的约束。

攻击者可以通过以下方式利用此漏洞:

  1. 设置特制的 x-sendfile-type: x-accel-redirect 头部。
  2. 设置特制的 x-accel-mapping 头部。
  3. 请求一个符合基于代理加速条件的路径。

影响 攻击者可能绕过代理强制执行的限制,访问本应受保护的内部端点(例如管理页面)。该漏洞不允许任意文件读取,但可能暴露敏感的应用路由。

此问题仅影响同时满足以下所有条件的系统:

  1. 应用在支持 x-accel-redirect 的代理(例如 Nginx)后面使用 Rack::Sendfile。
  2. 代理没有始终设置或移除 x-sendfile-typex-accel-mapping 头部。
  3. 应用暴露了一个返回响应 .to_path 方法的端点。

缓解措施

  1. 升级到已修复的 Rack 版本,该版本要求显式配置才能启用 x-accel-redirect
    1
    
    use Rack::Sendfile, "x-accel-redirect"
    
  2. 或者,配置代理始终设置或剥离这些头部(您应该这样做!):
    1
    2
    
    proxy_set_header x-sendfile-type x-accel-redirect;
    proxy_set_header x-accel-mapping /var/www/=/files/;
    
  3. 或者在 Rails 应用程序中,完全禁用 sendfile
    1
    
    config.action_dispatch.x_sendfile_header = nil
    

参考文献

严重性

中等

CVSS 总体评分:5.8 / 10

CVSS v3 基础指标

  • 攻击向量: 网络
  • 攻击复杂度:
  • 所需权限:
  • 用户交互:
  • 影响范围: 改变
  • 机密性影响:
  • 完整性影响:
  • 可用性影响:

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:N/A:N

EPSS 评分:0.042% (第13百分位)

弱点

  • CWE-200:向未授权参与者暴露敏感信息
  • CWE-441:非预期的代理或中介(‘困惑的代表’)
  • CWE-913:对动态管理代码资源的控制不当

标识符

  • CVE ID: CVE-2025-61780
  • GHSA ID: GHSA-r657-rxjc-j557

源代码

  • rack/rack

致谢

  • 分析师: leahneukirchen, matthewd
  • 修复审核者: jeremyevans
  • 修复开发者: ioquatix
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计