发布者:usa,于 2012 年 11 月 9 日
报告称 Ruby 1.9 系列使用的哈希函数存在哈希泛洪 DoS 攻击。此漏洞与针对 Ruby 1.8.7 的 CVE-2011-4815 不同。建议所有 Ruby 1.9 用户升级到 ruby-1.9.3 patchlevel 327 以获得此安全修复。
影响
精心构造的字符串序列可能会导致服务拒绝攻击,该服务通过将字符串作为键来解析该序列以创建哈希对象。例如,此漏洞会影响解析来自不受信任实体的 JSON 数据的 Web 应用程序。
详情
此漏洞类似于针对 Ruby 1.8.7 的 CVE-2011-4815。Ruby 1.9 版本使用了修改后的 MurmurHash 函数,但据 报告称存在一种方法可以创建相互之间哈希值冲突的字符串序列。此修复将 String 对象的哈希函数从 MurmurHash 更改为 SipHash 2-4。
解决方案
如果您正在使用 Ruby 1.9 版本,请更新到 ruby-1.9.3 patchlevel 327。如果您正在使用 Ruby 2.0.0 preview1 或 Ruby trunk,请更新到 trunk 版本 37575 或更高版本。除此之外,所有接受来自不受信任实体输入数据进行解析的 Ruby 应用程序都应将输入数据的大小限制在合理范围内。我们不确定未来是否可以在编程语言层面提供针对此类漏洞的保护。
受影响的版本
- 所有早于 ruby 1.9.3 patchlevel 327 的 ruby 1.9 版本
- 所有早于 trunk 版本 37575 的 ruby 2.0 版本(包括 2.0.0 preview1)
鸣谢
此漏洞由 SipHash 的设计者之一 Jean-Philippe Aumasson 报告。此修复的原始 SipHash 实现由 Ruby 提交者之一 Martin Boßlet 提供。
更新
- 于 2012-11-21 22:16:00 修复了一个错别字
- 最初发布于 2012-11-10 04:23:00