由 SJH 發表於 2009-07-21
日前在 Ruby 的標準函式庫 BigDecimal 中發現了易受 中斷服務攻擊 (DOS) 的弱點。由 BigDecimal 物件轉換到浮點數有問題,導致攻擊者能造成 segmentation faults。
ActiveRecord 也用了 BigDecimal 轉換到浮點數,因此大部分的 Rails 應用程式也都受到影響。
影響
攻擊者因為 BigDecimal 解析一個錯誤的極大的數字而造成中斷服務。 如以下例子:
BigDecimal("9E69999999").to_s("F")
有問題的版本
1.8 系列
- 1.8.6-p368 以及之前所有版本
- 1.8.7-p160 以及之前所有版本
1.9 系列
- 所有 1.9.1 版本皆無此問題
解決方式
1.8 系列
請更新到 to 1.8.6-p369 或 ruby-1.8.7-p174.
- https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p369.tar.gz
- https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p174.tar.gz
更新
- 先前 Ruby 1.8.7-p173 有些問題。如果已經下載,請改抓 p174。而 1.8.6-p369 沒有前述問題。