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

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

## こっちは直ぐ違うとわかる
"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

def index
render params[:id]
end
```
上記のようにパラメータを渡した場合に、アプリケーション外のファイルが参照できてしまう不具合があったので対策。この修正は難しい。.。追い切れない。...orz...
## Strong Parameterを使わないモデルへのデータの受け渡しでValidationを通すようにする
**[[CVE-2016-0753] Possible Input Validation Circumvention in Active Model](https://groups.google.com/forum/#!msg/rubyonrails-security/6jQVC1geukQ/8oYETcxbFQAJ)**
Strong Parameterを使わずに、Active Record等を使う場合に、
```ruby
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さんのブログ「なるようになるブログ」めっちゃ勉強になる。

👽 参考リンク

📚 おすすめの書籍

🖥 サーバについて

このブログでは「Cloud Garage」さんのDev Assist Program(開発者向けインスタンス無償提供制度)でお借りしたサーバで技術検証しています。 Dev Assist Programは、開発者や開発コミュニティ、スタートアップ企業の方が1GBメモリのインスタンス3台を1年間無料で借りれる心強い制度です!(有償でも1,480円/月と格安)