CVE-2015-7551: Fiddle 与 DL 中使用了不安全的字符串调用
由 usa 发表于 2015-12-16
翻译: Delton Ding
Fiddle 和 DL 的实现中使用了一个易受攻击的不安全的字符串调用。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 都存在风险。
受到影响的代码形如:
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 patchlevel 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)。
应急方法
如果你无法升级,下面提供的运行时补丁可以用于应急:
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 来替代它。
致谢
感谢 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 采用了全新的、RDoc 的 Aliki 默认主题。
由 Stan Lo 发表于 2025-12-23
重新设计我们的网站标识
我们激动地宣布网站已经全面改版。此次更新的设计方案由 Taeko Akatsuka (赤塚妙子) 创作。
由 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