瞎扯淡 Ruby 安全漏洞,1.9/2.0 全分支受影响

williamherry · 2013年05月15日 · 最后由 iBachue 回复于 2013年05月15日 · 3265 次阅读

Ruby 开发团队今天发布了两个更新版本 Ruby 1.9.3-p429 和 Ruby 2.0.0-p195。

这两个版本主要修复了 Ruby DL / Fiddle 中的一个安全漏洞:

对象污染绕过漏洞(CVE-2013-2065):受污染的字符串可以通过系统调用来使用,而不受 Ruby 中$SAFE 级别设置约束。

受影响的版本:

Ruby 1.9.3 p426 之前的所有 1.9.x 版本 Ruby 2.0.0 p195 之前的所有 2.0 版本 trunk 40728 之前的版本 Ruby 1.8 版本不受影响

如果你不能升级 Ruby,下面这个“猴子补丁”可以作为一种变通方案:

class Fiddle::Function 
  alias :old_call :call 
  def call(*args) 
    if $SAFE >= 1 && args.any? { |x| x.tainted? } 
      raise SecurityError, "tainted parameter not allowed" 
    end 
    old_call(*args) 
  end 
end

此外,这两个版本还进行了一些优化,修复了一些小的 bug,详细信息:1.9.3 p429 changeLog2.0.0 p195 changeLog

下载地址:

ruby-1.9.3-p429 ruby-2.0.0-p195

http://www.iteye.com/news/27746

幸亏这个特性貌似很少有人用...

$SAFE 很少有人用。。。

我觉得 Ruby 团队还是多关心点性能吧,少折腾安全性了。。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号