2019/03/14分のコミットです。
CHANGELOGへの追加はありませんでした。
Railsのバージョンをv6.0.0.beta3
に更新しています。
今回はセキュリティリリースで、下記のセキュリティフィックスが含まれています(CVE-2019-5420のフィックスは5.2系、6.0系のみです)。
- [CVE-2019-5418] File Content Disclosure in Action View
- [CVE-2019-5419] Denial of Service Vulnerability in Action View
- [CVE-2019-5420] Possible Remote Code Execution Exploit in Rails Development Mode
CVE-2019-5418は、ファイルコンテンツが漏えいする可能性がある脆弱性で、
def index render file: "#{Rails.root}/some/file" end
のように、accept formatの指定なしでfileをrenderした場合に問題が起こる可能性があります。
CVE-2019-5419は、細工されたaccept headersが送信された場合に、Action Viewのtemplate生成処理が重くなり、処理が出来なくなる恐れがある、というものです。CVE-2019-5418と合わせて、サポートしていないformatは受け付けないようにして対応しています。
CVE-2019-5420は、対象のRailsアプリケーションの事がある程度わかっているとsecret tokenを推測出来てしまうという脆弱性です。このsecret tokenをRailsの内部構造の処理と組み合わせる事で、リモートでコードを実行出来てしまう可能性があります。なお、secret_key_base
が指定されている場合は問題ありません。secret_key_base
が指定されていない場合、tmpファイルにsecret_key_base
を作成しそれを使用するよう修正し対応しています。
Revert "Remove Marshal support from SchemaCache"
schema cacheのMarshalサポートの為のメソッドを削除した、Remove Marshal support from SchemaCacheをRevertしています。不要かと思ったらまだ使っているケースがあった為、との事です。
Gemfile.lock
の修正です。
先の6.0.0.beta3
の対応の修正漏れの対応を行っています。
Add secret token for action mailbox tests
actionmailbox/test/dummy/config/initializers/secret_token.rb
の修正です。
先の脆弱性の対応により必要になったsecret_key_base
の指定を追加しています。secret_key_base
の指定が無い場合tmpファイルを自動で作成するようになっているのですが、テストアプリのディレクトリ構成上、そのtmpファイルの作成処理がエラーになるので、config.secret_key_base
を直接しているようにして対応しています。
Fix secret_key_base for Railties
railties/test/application/url_generation_test.rb
、
railties/test/rails_info_controller_test.rb
の修正です。
こちらもsecret_key_base
の指定を行うよう修正しています。
support slice assignment on SafeBuffer
activesupport/lib/active_support/core_ext/string/output_safety.rb
の修正です。
SafeBufferでslice assignment(e.g. buffer[0, 3] = '<'
)が指定出来るよう対応しています。
Make application work without tmp directory
railties/lib/rails/application.rb
の修正です。
CVE-2019-5420で追加されたsecret_key_base
を記載したtmpファイルを作成する前に、tmpディレクトリを作成するよう修正しています。
tmpファイルはtmpディレクトリ配下(tmp/development_secret.txt
)に作成するのですが、tmpディレクトリは存在しない可能性があり、存在しない場合にエラーになるのを防ぐ為。
GCS service: skip unnecessary bucket lookups
activestorage/lib/active_storage/service/gcs_service.rb
の修正です。
GCS Serviceのbucket生成処理で、skip_lookup
オプションを指定して不要なbucketのlookup処理を行わないよう修正しています。