Ruby 发现众多安全缺陷,Safe Level、WEBrick、Dl 和 DNS 查找皆受影响

  • Werner Schuster
  • 李明(nasi)

2008 年 8 月 11 日

话题:RubyRuby on Rails安全语言 & 开发架构

其中的一个问题来自safe levels。通过设置 safe level,可以禁止操作和定义被认为是污染了的数据。Ruby 中的污染数据(Tainted Data)在使用前必须显式的净化。被发现的安全缺陷有:
  • untrace_var 在 safe level 4 是允许的
  • $PROGRAM_NAME 在 safe level 4 是可以修改的
  • 不安全的方法在 safe level 1-3 可能可以调用
  • Syslog 操作在 safe level 4 是允许的
请看带有代码实例的缺陷列表。另一个和污染数据相关的问题来自于dl。dl 程序库允许用户载入动态库并调用其中的函数。因为 dl 并没有检测传入参数的被污染程度,因此可以借此来实现缓冲区溢出(exploits)攻击。
在 WEBrick 中也发现了安全缺陷,这可能会导致拒绝服务(DoS)攻击。问题源自用于响应和解析 HTTP 头的部分代码导致──在特定的数据下,正则引擎会挂掉导致程序终止。

对于 1.8.x 的用户,解决方法是升级至 1.8.6-p286 和 1.8.7-p71。对于 1.9.x 的 Ruby 用户,似乎当前最好的解决方法就是从 SVN 中取得最新的代码──所有在 r18423 之后的版本应该都是安全的。

最后,提醒一句:虽然最近发现的 Ruby 解释器的问题已经解决了──但是第一个修复版存在兼容性的问题。在将其正式投入产品级应用以前,要对升级进行仔细的测试。
RubyRuby on Rails安全语言 & 开发架构