跳到主要内容

高危

Rails Ruby on Rails Action View module路径遍历漏洞

2019-03-13 17:26:59 公开 ,2026-02-25 01:49:17 更新

  • CISA KEV
  • 关键漏洞
  • 远程
  • 公开PoC
  • CWE Top 25 (2023)
  • 无需认证
  • 开源组件漏洞
  • 2024两高一弱互联网漏洞
  • 2024两高一弱内网漏洞
  • CWE Top 25 (2024)
  • 2025两高一弱漏洞
CWEs:
CWE-22 (Path Traversal)
CAPEC:
CAPEC-126 (Path Traversal) CAPEC-64 (Using Slashes and URL Encoding Combined to Bypass Validation Logic) CAPEC-76 (Manipulating Web Input to File System Calls) CAPEC-78 (Using Escaped Slashes in Alternate Encoding) CAPEC-79 (Using Slashes in Alternate Encoding)
SSVC:
可利用状态:已被积极利用攻击自动化:是技术影响评估:部分 2025-07-17 11:55:43

风险信息

CVSS v2 向量
AV:N/AC:L/Au:N/C:P/I:N/A:N
CVSS v2 风险值
5
CVSS v3 向量
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
CVSS v3 风险值
7.5
CVSS v3.1 向量
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
CVSS v3.1 风险值
7.5

详细信息

漏洞类型
信息泄露
漏洞描述
Ruby on Rails是一套使用Ruby开发的,非常有生产力、维护性高、容易布署的Web 开发框架,是全世界 Web 应用程式开发的首选框架之一。Action View和Action Controller是Action Pack的两个主要组件。在Rails中,请求由Action Pack分两步处理,一步交给控制器(逻辑处理),一步交给视图(渲染视图)。一般来说,Action Controller的作用是和数据库通信,根据需要执行CRUD操作;Action View用来构建响应。Action View是个独立的代码库,可以在任何Ruby代码库中使用。 Rails Ruby on Rails在Action View版本小于 5.2.2.1、小于 5.1.6.2、小于 5.0.7.2、小于 4.2.11.1 以及版本 3 中存在路径遍历漏洞。漏洞源于使用render渲染文件内容却未能指定接受格式,精心构造的Accept请求头与对render file: 的调用相结合,可能会导致目标服务器上的任意文件被渲染,从而泄露文件内容。
修复建议
升级至Action View module的最新版本(4.2.11.1、5.0.7.2、5.1.6.2、5.2.2.1、6.0.0.beta3或更高版本),可从rails GIT存储库获得。参考链接: https://github.com/rails/rails/tree/master/actionview https://weblog.rubyonrails.org/2019/3/13/Rails-4-2-5-1-5-1-6-2-have-been-released/
缓解措施
可以通过指定文件呈现的格式来缓解此漏洞,如下所示: class UserController < ApplicationController def index render file: "#{Rails.root}/some/file", formats: [:html] end end 总之,受影响的渲染调用如下所示: render file: "#{Rails.root}/some/file" 可以通过更改为以下内容来缓解该漏洞: render file: "#{Rails.root}/some/file", formats: [:html] 其他渲染调用不受影响。或者,可以在初始值设定项中应用以下monkey补丁: $ cat config/initializers/formats_filter.rb # frozen_string_literal: true ActionDispatch::Request.prepend(Module.new do def formats super().select do |format| format.symbol || format.ref == "*/*" end end end)

参考链接