おもしろwebサービス開発日記

Ruby や Rails を中心に、web技術について書いています

Rubyの脆弱性が発見されました

RubyDOS攻撃脆弱性が発見されたようです。

Riding Rails: DoS Vulnerability in Ruby
DoS vulnerability in BigDecimal

どんな脆弱性

BigDecimalからFloatに変換する部分に問題があるらしく、下記のように、大きい数値をRubyにパースさせることでDOS攻撃ができるみたいです。ActiveRecordが下記のようなコードを使っているようで、ほとんどのRailsアプリが脆弱性の対象になっています。

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

対象

  • 1.8.6-p368以前
  • 1.8.7-p160以前

1.9.1は問題ないようです。

最善の解決方法

Rubyを1.8.6-p369またはruby-1.8.7-p173にアップグレードする。

とりあえずの解決方法

Rubyのアップグレードが簡単にできないような場合の暫定対処法です。

この対処法はBigDecimalのフォーマットを変えてしまうので、ずっとこのままというのはオススメでないそうです。