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
こちらは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')