已找到并修复了在 ruby 中发现的一处拒绝服务漏洞。该漏洞是由 BigDecimal 方法错误处理某些大型输入值而导致的,并可能导致解释器崩溃。攻击者可利用此漏洞来导致任何基于用户输入创建 BigDecimal 对象(包括几乎每个 Rails 应用程序)的 ruby 程序崩溃。此漏洞已被分配 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 安全团队确认该错误的性质并处理发布流程。