同時刻に2つリリース案内されてます。
どういうこと?3.2.4の扱いは?
とblogを見てみると、どうやら3.2.4はテストが落ちる問題があった模様。
3.2.5では、それをrevert(4ce7f98)したのと
いくつかの修正が入っているようです。
んで、3.2.4のメインの修正は、ActiveRecordの2つの脆弱性対策がされています。
CVE
・Unsafe Query Generation Risk in Ruby on Rails (CVE-2012-2660)
・SQL Injection Vulnerability in Ruby on Rails (CVE-2012-2661)
Release ANN
・Riding Rails: Rails version 3.2.5 has been released!
・Riding Rails: Rails version 3.2.4 has been released!
・Riding Rails: Rails version 3.1.5 has been released!
・Riding Rails: Rails version 3.0.13 has been released!
3.2.4ざっくり
CVE対策
・Unsafe Query Generation Risk in Ruby on Rails (CVE-2012-2660)
こういったコードで、params[:token]が[nil](nilの配列)になるような
リクエストの場合、後の処理(ここではreset_password)が実行されてしまうという問題のようです。
unless params[:token].nil? user = User.find_by_token(params[:token]) user.reset_password! end
patchも記載されていますが
version upできない人のとりあえずの回避策はこちら。
unless params[:token].nil? || params[:token] == [nil] user = User.find_by_token(params[:token]) user.reset_password! end
これは書きたくないですね。
コミットはこちら。
Strip nil from parameters hash. · dff6db1 · rails/rails
・SQL Injection Vulnerability in Ruby on Rails (CVE-2012-2661)
次のようにwhereの引数にparams[:id]のような値を入れている場合
params[:id]にhash形式で別の値をセットするとSQL Injectionの可能性があったようです。
Post.where(:id => params[:id]).all
テストコードを見ると、こんな感じ。
Post.where(:id => { 'posts.author_id' => 10 }).first
コミットはこちら。
Post.where(:id => { 'posts.author_id' => 10 }).first
他
いろいろdeprecateが入っていたり、bugfixがあるのですが
とりあえず面白そうなとこは下記かなと。
・Added #beginning_of_hour and #end_of_hour to Time and DateTime core extensions. Mark J. Titorenko
Pull Request #6156: Beginning and end of hour support for Time and DateTime by mjtko · rails/rails
59分59秒みたいなのをend_of_hourで書けるようになりました。
同様にbeginning_of_hourで00分00秒を表せます。