Rails 3.2.11, 3.1.10, 3.0.19, and 2.3.15 have been released!

2013/1/11 追記

ここの情報の方が詳しかった。
Rails 3.2.11にアップデートしましょう | TechRacho

      • -

今回もsecurity fix。


Riding Rails: Rails 3.2.11, 3.1.10, 3.0.19, and 2.3.15 have been released!
しかし、

extremely critical security fixes

とあるように、結構ヤバ目の脆弱性のようです。


また、2.3系も更新されています。
(もうサポート終了したと思っていたのでびっくり。危ないやつは対応してくれるんですね)


こちらでも紹介されています。
「ただちに」アップグレードを推奨:「Ruby on Rails」のアップデート公開、極めて深刻な脆弱性を修正 - @IT


CVE-2013-0155

Unsafe Query Generation Risk in Ruby on Rails (CVE-2013-0155) - Google グループ

こちらは3系のみ影響あり。
ActiveRecordでJSONパラメータのパース利用時に脆弱性があるようです。

Workarounds

to_sすることで軽減できるようです。

    unless params[:token].nil? || params[:token].to_s.empty? 
      user = User.find_by_token(params[:token].to_s) 
      user.reset_password! 
    end 
    >> ['xyz', nil].to_s 
    => "xyz" 
    >> ['xyz', nil].to_s.empty? 
    => false 

CVE-2013-0156

CVE-2013-0156

こちらは2系も含めて全てのバージョンに影響があります。
詳しくはわかりませんが requestをパースするロジックにsymbolを作成したりyamlをパースしたりってのが入ってる模様。

Workarounds

version毎に異なるようです。


1)XMLパーサへの対応
1-1)XMLを完全に無効化する
XMLパーサが不要な場合。


Rails 3.2, 3.1 and 3.0

ActionDispatch::ParamsParser::DEFAULT_PARSERS.delete(Mime::XML) 

Rails 2.3

ActionController::Base.param_parsers.delete(Mime::XML) 

1-2)XMLパーサからYAML and Symbolを使用できないようにする
XMLパーサが必要な場合は、REXML::Document.entity_expansion_limit を設定する方法で回避。



2)YAMLのパースの無効化

Rails1.1.0ではデフォルト有効だったパラメータのよう。
Rails2系では、ActionController::Base.param_parsers[Mime::YAML] = :yaml が設定されているかどうかで確認可能。


Rails3系では下記で対策可。

ActionDispatch::ParamsParser::DEFAULT_PARSERS.delete(Mime::YAML) 


下記でも可能な模様。
Rails 3.2, 3.1, 3.0

ActiveSupport::XmlMini::PARSING.delete("symbol") 
ActiveSupport::XmlMini::PARSING.delete("yaml") 

Rails 2.3

ActiveSupport::CoreExtensions::Hash::Conversions::XML_PARSING.delete('symbol') 
ActiveSupport::CoreExtensions::Hash::Conversions::XML_PARSING.delete('yaml')