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のアップグレードが簡単にできないような場合の暫定対処法です。
- Railsであれば、RAILS_ROOT/config/initializersにbigdecimal-segfault-fix.rbをコピペしてもOK。
この対処法はBigDecimalのフォーマットを変えてしまうので、ずっとこのままというのはオススメでないそうです。