3つsecurity fixがあります。
3.2系のdeprecation warningを削除し、今後導入もやめるそうです。
(え?やめちゃうの?どこで議論されてたんだろう?)
Release ANN
・Riding Rails: Rails 3.2.8 has been released!
CVE
CVE-2012-3463
Ruby on Rails Potential XSS Vulnerability in select_tag prompt
select_tag時にpromptというキーで値を渡すとescapeされなかったようです。
2.3系は無関係。
問題となる書き方。
select_tag("name", options, :prompt => UNTRUSTED_INPUT)
修正箇所。
# actionpack/lib/action_view/helpers/form_tag_helper.rb if prompt = options.delete(:prompt) - option_tags = "<option value=\"\">#{prompt}</option>".html_safe + option_tags + option_tags = content_tag(:option, prompt, :value => '').safe_concat(option_tags)
CVE-2012-3464
Potential XSS Vulnerability in Ruby on Rails
single quoteを含む場合、escapeされないという脆弱性があったようです。
Railsが提供しているhelperについては、single quoteを使うことはないので
影響は低い模様。
Rack::Utils.escape_html を利用するように修正したのですが
今度は'/'がescapeされてしまうので、ブラウザは期待通りに動くはずですが
testが落ちるかもとのこと。
修正箇所。
escape対象にsigle quoteを追加しています。
あと、ついでに1.8.7対応のコード(Issue #3927: warning: regexp match /.../n against to UTF-8 string · rails/rails)を削除。
# activesupport/lib/active_support/core_ext/string/output_safety.rb - HTML_ESCAPE = { '&' => '&', '>' => '>', '<' => '<', '"' => '"' } + HTML_ESCAPE = { '&' => '&', '>' => '>', '<' => '<', '"' => '"', "'" => ''' }
CVE-2012-3465
XSS Vulnerability in strip_tags
不正なhtml形式の場合、strip_tags が動作しなかったようです。
テストコードに下記のようなのが追加されています。
assert_equal "", strip_tags("<script>")
修正箇所。へー。
#actionpack/lib/action_view/helpers/sanitize_helper.rb def strip_tags(html) - self.class.full_sanitizer.sanitize(html).try(:html_safe) + self.class.full_sanitizer.sanitize(html) end
ざっくり
ActionPack
・deprication の削除
':data => { :confirm => "Text" }'、:disable_with、:mouseover、button_to_function、link_to_function
ActiveRecord
・RSpec利用時にdevelopmentのdatabase切り捨てが発生していた模様。
原因は、RAILS_ENVの渡し方に問題があるようです。
(4b8b8c)3.2.7のバグっぽいです。
・数値の0から0に値を変更した場合、changesメソッドの戻り値がtrueになっていたのを修正(Issue #7237)
・depricationの削除
update_attribute, composed_of, :finder_sql, :counter_sql, :insert_sql, :delete_sql
・session storeがeager loadされない(Issue #7160)
ActionDispatchなしでeager loadingされないって書いてるが、ちょっとよくわからん。
余談
security reportはemailで送るんですね。
Ruby on Rails: Security Policy