Tech Racho エンジニアの「?」を「!」に。
  • 開発

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

追記(2018/10/19): その後パッケージング修正のためRuby 2.5.3がリリースされました。


こんにちは、hachi8833です。既に対応済みの方も多いかと思いますが、Rubyのセキュリティ対応のためのマイナーバージョン更新が昨晩リリースされました。

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


ruby-lang.orgより

詳しくは上のリンク先をご覧ください。コミットログのbackportは40件と多めでした。

メモ: 上のうちopensslの脆弱性については、Ruby 2.4/2.5系であればgemのアップデートでも対応できるとのことです。Ruby 2.3系についてはgemアップデートでopensslを変更できないため、Ruby本体のアップグレードが必要になります。

gem install openssl -v ">= 2.1.2"

バックポートを覗いてみた

40件のバックポートを短時間で追うのは無理なので、目についたものをひとつ。

    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).sumNaNになりました。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

関連記事

Ruby 2.5.0リリース!NEWSを読んでみた

Ruby 2.0.0リリース! – キーワード引数を使ってみよう


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。