Ruby 2.5.2→2.5.3/2.4.5/2.3.8リリース(脆弱性修正)

追記(2018/10/19): その後パッケージング修正のためRuby 2.5.3がリリースされました。 Hello Rubyists, as I announced in https://t.co/FCRDMVpsgc, I have released ruby-2.5.3. https://t.co/Ju4mzUwWyg This is just for fixing packaging issue. Sorry for repeated releases. — nagachika (@nagachika) October 18, 2018 こんにちは、hachi8833です。既に対応済みの方も多いかと思いますが、Rubyのセキュリティ対応のためのマイナーバージョン更新が昨晩リリースされました。 Ruby 2.5.2/2.4.5/2.3.8リリース(脆弱性修正) お知らせ: Ruby 2.5.2 リリース ruby-lang.orgより 修正: CVE-2018-16396: Array#pack および String#unpack の一部のフォーマット指定においてtaintフラグが伝播しない脆弱性について 修正: CVE-2018-16395: OpenSSL::X509::Name の同一性判定が機能していない脆弱性について コミットログ: Comparing v2_5_1...v2_5_2 · ruby/ruby 詳しくは上のリンク先をご覧ください。コミットログのbackportは40件と多めでした。 メモ: 上のうちopensslの脆弱性については、Ruby 2.4/2.5系であればgemのアップデートでも対応できるとのことです。Ruby 2.3系についてはgemアップデートでopensslを変更できないため、Ruby本体のアップグレードが必要になります。 gem install openssl -v “>= 2.1.2” バックポートを覗いてみた 40件のバックポートを短時間で追うのは無理なので、目についたものをひとつ。 merge revision(s) 64014: [Backport #14926] · ruby/ruby@2c26edc k = Class.new do include Enumerable def initialize(*values) @values = values end def each(&block) @values.each(&block) end end assert_equal(+Float::INFINITY, k.new(0.0, +Float::INFINITY).sum) assert_equal(+Float::INFINITY, k.new(+Float::INFINITY, 0.0).sum) assert_equal(-Float::INFINITY, k.new(0.0, -Float::INFINITY).sum) assert_equal(-Float::INFINITY, k.new(-Float::INFINITY, 0.0).sum) 2.5.1だとk.new(0.0, +Float::INFINITY).sumがNaNになりました。2.5.2ではInfinityになります。 他にWindows対応のバックポートもいくつかありました。 おまけ: ruby-buildを手動でインストール 以前から気になっていたのですが、Homebrew/homebrew-coreは更新が遅れ気味なので、現時点でrbenv install -lを実行しても2.5.2がリストに含まれていませんでした。 MacのHomebrewでbrew install rbenvを使ってrbenvをインストールすると、ruby-buildもHomebrewでインストールされてしまいます。 そこで、今回のセキュリティアップデートを機会に以下を実行して、ruby-buildを直接plugins/ruby-buildにインストールしました。なお環境変数は.bashrcに保存しなくても問題ありませんでした。 RBENV_ROOT=/Users/<自分のディレクトリ>/.rbenv git clone https://github.com/rbenv/ruby-build.git $RBENV_ROOT/plugins/ruby-build これで、今後は以下を実行すればruby-buildを直接更新できます。 cd ~/.rbenv/plugins/ruby-build git pull なお、Homebrewからruby-buildを削除しようとすると以下が表示されます。Homebrewでrbenvの依存関係としてインストールされているruby-buildはplugin/のruby-buildより優先度が低いので、強制削除せずそのままにすることにしました。 $ brew uninstall ruby-build Error: Refusing to uninstall /usr/local/Cellar/ruby-build/20180822 because it is required by rbenv, which is currently installed. You can override this and force removal with: brew uninstall –ignore-dependencies ruby-build 後は以下を実行してRuby 2.5.2をインストールできました。 rbenv install 2.5.2 rbenv global 2.5.2 2.5.2インストール完了しました。 参考: rbenvとruby-buildの正しいインストール方法 - Qiita 参考: rbenv install -l のリストを更新する - nafuruby’s diary 関連記事 … Continue reading Ruby 2.5.2→2.5.3/2.4.5/2.3.8リリース(脆弱性修正)