现在的位置: 首页News>正文
Ruby Hash算法爆出DoS(拒绝服务)攻击漏洞
2012年01月05日 News 评论关闭 ⁄ 被围观 4,987 次+

近日,Ruby的Hash算法被爆出了一个安全漏洞,攻击者可以据此发起DoS(拒绝服务)攻击。
漏洞和计算复杂性相关,攻击者通过碰撞字符串hash值,可以发现一些字符串序列,使用这些序列,攻击者可以发起拒绝服务攻击,例如,可以将它们作为你的Rails应用HTTP请求的POST参数。

详细说明

该情况与2003年在Perl中发现的漏洞类似。在Ruby 1.8分支中,使用了一个确定性的hash函数用于hash字符串,“确定性”的意思是除了输入的字符串自身外没有其他的位参与生成hash值,因此你可以预先计算一个字符串的hash值。

通过收集一系列有相同hash值的字符串,攻击者可以让Ruby进程碰撞hash表(包括hash类实例)。Hash表的amortized O(1)属性取决于hash值分布的均匀性。通过有针对性的输入,攻击者可以让hash表工作比预期慢得多,也就是说构造一个n元素表的复杂度是 O(n2)。

受影响的版本

Ruby 1.8.7-p352 及所有之前的版本。

Ruby 1.9系列不会受到这种攻击,它们的哈希实现与Ruby 1.8系列不同。

解决方案

目前的解决方案是通过一些PRNG(伪随机数发生器)生成的随机位来扰乱字符串hash函数。通过这样做,字符串的hash值将不再是确定的。这 样,String#hash结果只和当前进程的生命周期一致,并会在下次启动时产生一个不同值。针对这种情况,攻击者必须创建一组针对这种混杂方式的健壮 的字符串,但这是十分困难的。

请将Ruby升级到1.8.7 - P357或更高版本。
Ruby 1.8.7 - P357 下载:http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/391606

本文地址:http://www.92csz.com/30/1004.html
如非注明则为本站原创文章,欢迎转载。转载请注明转载自:moon's blog
 

抱歉!评论已关闭.