2009年6月9日,星期二

Ruby中的DoS漏洞

由 michael 发布

Ruby中发现并修复了一个拒绝服务(DoS)漏洞。该漏洞是由于BigDecimal方法处理某些大输入值不当,可能导致解释器崩溃。攻击者可以利用此漏洞来破坏任何根据用户输入创建BigDecimal对象的Ruby程序,这几乎涵盖了所有Rails应用程序。该漏洞已被分配CVE名称 CVE-2009-1904。

有关升级说明和受影响的Ruby版本信息,请参阅Ruby安全团队的公告

建议所有用户立即升级他们的Ruby安装以避免此问题。如果您无法升级Ruby安装,或者正在使用已停止维护的Ruby版本,可以在GitHub上找到一个解决方法。您可以将其作为gem安装,或者将文件bigdecimal-segfault-fix.rb直接复制到您的Rails应用程序的config/initializers目录下。

注意:此解决方法会破坏BigDecimal支持的有效格式,用户不应长期依赖此修复,而应立即计划迁移到受支持的Ruby版本。

即将发布的Rails 2.3.3版本将包含一些小的缓解措施,以减少此漏洞的一些潜在攻击途径。然而,这些缓解措施并不能完全堵塞所有可能的攻击方式,用户仍应尽快升级他们的Ruby安装。

感谢Jose Fernández向Rails安全团队报告此漏洞,感谢Ruby安全团队确认了该bug的性质并处理了发布流程。