BigDecimal 中的 DoS 漏洞

Urabe Shyouhei 发布于 2009 年 6 月 9 日

在 Ruby 的 BigDecimal 标准库中发现了一个拒绝服务 (DoS) 漏洞。将 BigDecimal 对象转换为 Float 数字时存在问题,这可能导致攻击者触发分段错误。

ActiveRecord 依赖于此方法,因此大多数 Rails 应用程序都受到此影响。尽管这不是一个 Rails 特有的问题。

影响

攻击者可以通过让 BigDecimal 解析一个非常大的数字来导致拒绝服务,例如

BigDecimal("9E69999999").to_s("F")

受影响的版本

1.8 系列

  • 1.8.6-p368 及之前的所有版本
  • 1.8.7-p160 及之前的所有版本

1.9 系列

  • 所有 1.9.1 版本均不受此问题影响

解决方案

1.8 系列

请升级到 1.8.6-p369 或 ruby-1.8.7-p174。

更新

  • Ruby 1.8.7-p173 存在一个问题。如果您已经下载了它,请获取一个较新的版本。Ruby 1.8.6-p369 不存在此 bug。

近期新闻

Ruby 4.0.0 发布

我们很高兴地宣布 Ruby 4.0.0 的发布。Ruby 4.0 引入了“Ruby Box”和“ZJIT”,并增加了许多改进。

naruse 发布于 2025 年 12 月 25 日

Ruby 文档的全新外观

继 ruby-lang.org 重新设计之后,我们还有更多好消息来庆祝 Ruby 成立 30 周年:docs.ruby-lang.org 采用了 Aliki——RDoc 的新默认主题,焕然一新。

Stan Lo 发布于 2025 年 12 月 23 日

重新设计我们的网站标识

我们很高兴地宣布对我们的网站进行全面重新设计。此次更新的设计由 Akatsuka Taeko 创作。

Hiroshi SHIBATA 发布于 2025 年 12 月 22 日

Ruby 4.0.0 preview3 发布

我们很高兴地宣布 Ruby 4.0.0-preview3 的发布。Ruby 4.0 引入了 Ruby::Box 和“ZJIT”,并增加了许多改进。

naruse 发布于 2025 年 12 月 18 日

更多新闻...