酒と泪とRubyとRailsと

Ruby on Rails と Objective-C は酒の肴です!

Rails セキュリティフィックス 4.2.5.1, 4.1.14.1, 5.0.0.beta1.1 のメモ

1/26(火)にRails 4.2.5.1, 4.1.14.1, 5.0.0.beta1.1等のセキュリティフィックスが出たのでそのメモ。

Riding Rails: Rails 5.0.0.beta1.1, 4.2.5.1, 4.1.14.1, 3.2.22.1, and rails-html-sanitizer 1.0.3 have been released!


ベーシック認証の文字列比較の応答時間での推測を防ぐ

[CVE-2015-7576] Timing attack vulnerability in basic authentication in Action Controller

ベーシック認証の文字列比較をした時の応答時間で、処理時間が推測されるのを防ぐ。

1
2
3
4
5
## こっちは直ぐ違うとわかる
  "foo" == "bar"

## 上よりは時間がかかる
  "foo" == "fo1"

DoS(Denial of Service)攻撃でmine-typeを大量に送ったらサーバが落ちてしまう問題の対応

CVE-2016-0751 Possible Object Leak and Denial of Service attack in Action Pack

mime-typeをglobal cacheしていたため、大量な不正アクセスでメモリを圧迫してサービス停止しないようにするための対策。

ちなみに「mime-type」とはデータの種類を表すコードのことで、画像の image/jpeg やHTMLの text/html などがある。

allow_destroy: false が効かないバグの修正

[CVE-2015-7577] Nested attributes rejection proc bypass in Active Record

accepts_nested_attributes_for をつけて親子クラスを一括で登録、更新する際に allow_destroy: false(削除を許可しない)を設定したにもかかわらず、 proc の :reject_if が優先されて削除される不具合があったのを修正。

renderにパラメータを渡した場合にアプリ外のファイルが参照できる不具合の対応

[CVE-2016-0752] Possible Information Leak Vulnerability in Action View

1
2
3
def index
  render params[:id]
end

上記の様にパラメータを渡した場合に、アプリ外のファイルが参照できてしまう不具合があったので対策。この修正は難しい…追い切れない….orz…

Strong Parameterを使わないモデルへのデータの受け渡しでValidationを通すようにする

[CVE-2016-0753] Possible Input Validation Circumvention in Active Model

Strong Parameterを使わずに、ActiveRecord等を使う場合に、

1
SomeModel.new(unverified_user_input)

により、Validationを通さずに値が保存できてしまうバグの対応。

routesに :controller があるとメモリリークするバグの回避

CVE-2015-7581 Object leak vulnerability for wildcard controller routes in Action Pack

めっちゃ勉強になります

rails-html-sanitizerの重要なセキュリティフィックス

rails-html-sanitizerの重要なセキュリティフィックスが発生しました。

rails-html-sanitizer 1.0.2 => 1.0.3の差分

rails-html-sanitizer 1.0.2 => 1.0.3にバージョンアップされた差分はこちら。

これにより、rails-html-sanitizer のフィルターがより厳格化される。

rails 4.2.5.0 => 4.2.5.1 の差分

4.2.5.1 で RSpec のパフォーマンスが悪くなる?

4.2.5.1にした場合、RSpecで上記のエラーがでるようになったそうですが、こちらは対応/Closeされました。 その結果として、RSpecのパフォーマンスが落ちている(処理が遅くなった)人が出ているようです。

本番への適用はもう少しだけ様子を見たほうが良さそうです。

あとがき

y_yagiさんのブログ「なるようになるブログ」めっちゃ勉強になる。

Special Thanks

おすすめの書籍