Rack信息泄露漏洞深度解析

本文详细分析了CVE-2025-61780漏洞,该漏洞存在于Rack::Sendfile中间件中,攻击者可通过特制头部绕过代理访问限制,可能导致敏感信息泄露。文章包含受影响版本、技术细节和修复方案。

Rack存在可能的信息泄露漏洞 · CVE-2025-61780

漏洞详情

包信息

  • 包名: rack (RubyGems)
  • 包管理器: bundler

受影响版本

  • < 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-type或x-accel-mapping头部时,会将其解释为代理配置指令。这可能导致中间件向代理发送"重定向"响应,提示代理重新发出新的内部请求,该请求不受代理访问控制约束。

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

  • 设置特制的x-sendfile-type: x-accel-redirect头部
  • 设置特制的x-accel-mapping头部
  • 请求符合基于代理加速条件的路径

影响

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

此漏洞仅影响满足以下所有条件的系统:

  • 应用程序在使用支持x-accel-redirect的代理(如Nginx)时使用Rack::Sendfile
  • 代理不总是设置或移除x-sendfile-type和x-accel-mapping头部
  • 应用程序暴露了返回响应.to_path主体的端点

修复方案

升级到修复版本

升级到修复版本的Rack,需要显式配置以启用x-accel-redirect:

1
use Rack::Sendfile, "x-accel-redirect"

代理配置

或者,配置代理始终设置或剥离头部:

1
2
proxy_set_header x-sendfile-type x-accel-redirect;
proxy_set_header x-accel-mapping /var/www/=/files/;

Rails应用配置

在Rails应用程序中,完全禁用sendfile:

1
config.action_dispatch.x_sendfile_header = nil

参考信息

安全评分

CVSS总体评分

5.8/10(中等严重性)

CVSS v3基础指标

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

EPSS评分

0.042%(第13百分位)

弱点分类

  • CWE-200:向未授权参与者暴露敏感信息
  • CWE-441:意外代理或中介(“困惑副手”)
  • CWE-913:动态管理代码资源控制不当

致谢

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