公告 [安全提醒] hashing algorithm collision 将导致拒绝服务攻击

fsword · 2012年01月02日 · 最后由 zhangyuan 回复于 2012年02月04日 · 2456 次阅读

去年最后一个安全门是针对拒绝服务攻击的 hashing algorithm collision,很特别的是这个 bug 涉及了几乎所有语言的标准库

相关博客 http://www.ocert.org/advisories/ocert-2011-003.html 中文博客上的介绍 http://www.laruence.com/2011/12/29/2412.html

对 ruby 社区而言:

C ruby 1.8 : 需要升级到最近的 ruby-1.8.7-p357 http://www.ruby-forum.com/topic/3312298

C ruby 1.9:2 年前已经解决,此次无须升级

JRuby:需要升级到最近的 1.6.5.1 http://jruby.org/2011/12/27/jruby-1-6-5-1

也可以间接地通过限制 Hash 的 key 的数量来减少攻击的影响。而且似乎目前可行的方法就是限制 key 的数量。

具体参考: Bug 750564 - (CVE-2011-4815) CVE-2011-4815 ruby: hash table collisions CPU usage DoS (oCERT-2011-003)

https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2011-4815

默认情况下,Rack 会限制请求参数里每个 key 的 key.size 的和,不能大于 65536。主要是两个函数 Rack::Utils.parse_query 和 Rack::Multipart::Parser#parse

https://github.com/rack/rack/commit/5b9d09a81a9fdc9475f0ab0095cb2a33bf2a8f91#lib/rack/multipart/parser.rb

evanphx authored December 14, 2011 raggi committed December 28, 2011

请注意这个提交的时间在 2011 年 12 月。所以老版本的 Rack 都可能受影响。

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