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リリース! – キーワード引数を使ってみよう

デザインも頼めるシステム開発会社をお探しならBPS株式会社までどうぞ 開発エンジニア積極採用中です! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

hachi8833

Twitter: @hachi8833、GitHub: @hachi8833 コボラー、ITコンサル、ローカライズ業界、Rails開発を経てTechRachoの編集・記事作成を担当。 これまでにRuby on Rails チュートリアル第2版の半分ほど、Railsガイドの初期翻訳ではほぼすべてを翻訳。その後も折に触れてそれぞれ一部を翻訳。 かと思うと、正規表現の粋を尽くした日本語エラーチェックサービス enno.jpを運営。 実は最近Go言語が好き。 仕事に関係ないすっとこブログ「あけてくれ」は2000年頃から多少の中断をはさんで継続、現在はnote.muに移転。

hachi8833の書いた記事

週刊Railsウォッチ

インフラ

ActiveSupport探訪シリーズ