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さんのブログ「なるようになるブログ」めっちゃ勉強になる。

🐞 参考リンク

🖥 VULTRおすすめ

VULTR」はVPSサーバのサービスです。日本にリージョンがあり、最安は512MBで2.5ドル/月($0.004/時間)で借りることができます。4GBメモリでも月20ドルです。 最近はVULTRのヘビーユーザーになので、「ここ」から会員登録してもらえるとサービス開発が捗ります!

📚 おすすめの書籍