CVE-2015-7551: Fiddle 和 DL 中存在不安全 Tainted 字符串使用漏洞
由 usa 发布于 2015 年 12 月 16 日
Fiddle 和 DL 中存在一个不安全的污点字符串使用漏洞。该漏洞已被分配 CVE 标识符 CVE-2015-7551。
详情
Fiddle 和 DL 中存在不安全的污点字符串使用。此问题最初在 DL 中通过 CVE-2009-5147 报告并修复,但在 DL 使用 Fiddle 和 libffi 重新实现后再次出现。
此外,关于 DL,CVE-2009-5147 在 Ruby 1.9.1 中已修复,但在其他分支中未修复,因此除了 Ruby 1.9.1 之外捆绑了 DL 的 Ruby 版本仍然存在漏洞。
受影响的代码看起来像这样
handle = Fiddle::Handle.new(dangerous_user_input)或
handle = Fiddle::Handle.new(some_library)
function_pointer = handle[dangerous_user_input]所有运行受影响版本的用户都应立即升级或使用以下任一解决方法。
受影响的版本
- Ruby 1.9.2 和 Ruby 1.9.3 的所有补丁版本(DL 和 Fiddle)。
- Ruby 2.0.0 补丁级别 648 之前的 Ruby 2.0.0 所有补丁版本(DL 和 Fiddle)。
- Ruby 2.1.8 之前的 Ruby 2.1 所有版本(DL 和 Fiddle)。
- Ruby 2.2.4 之前的 Ruby 2.2 所有版本(Fiddle)。
- Ruby 2.3.0 preview 1 和 preview 2(Fiddle)。
- trunk revision 53153 之前(Fiddle)。
变通方法
如果您无法升级,可以应用以下 monkey patch 作为 Fiddle 的一种变通方法
class Fiddle::Handle
alias :old_initialize :initialize
def initialize file, *args
raise SecurityError if file.tainted? && $SAFE > 0
old_initialize file, *args
end
alias :sym :[]
alias :old_call :[]
def [] fun
raise SecurityError if fun.tainted? && $SAFE > 0
old_call fun
end
end如果您使用的是 DL,请使用 Fiddle 而不是 DL。
致谢
感谢 Christian Hofstaedtler zeha@debian.org 报告此问题!
历史
- 首次发布于 2015-12-16 12:00:00 UTC
近期新闻
Ruby 4.0.0 发布
我们很高兴地宣布 Ruby 4.0.0 的发布。Ruby 4.0 引入了“Ruby Box”和“ZJIT”,并增加了许多改进。
由 naruse 发布于 2025 年 12 月 25 日
Ruby 文档的全新外观
继 ruby-lang.org 重新设计之后,我们还有更多好消息来庆祝 Ruby 成立 30 周年:docs.ruby-lang.org 采用了 Aliki——RDoc 的新默认主题,焕然一新。
由 Stan Lo 发布于 2025 年 12 月 23 日
重新设计我们的网站标识
我们很高兴地宣布对我们的网站进行全面重新设计。此次更新的设计由 Akatsuka Taeko 创作。
由 Hiroshi SHIBATA 发布于 2025 年 12 月 22 日
Ruby 4.0.0 preview3 发布
我们很高兴地宣布 Ruby 4.0.0-preview3 的发布。Ruby 4.0 引入了 Ruby::Box 和“ZJIT”,并增加了许多改进。
由 naruse 发布于 2025 年 12 月 18 日