YAML の URI エスケープ処理におけるヒープオーバーフローについて (CVE-2014-2525)

Ruby の YAML データにおける URI エスケープ処理にオーバーフロー問題があります。 この脆弱性は CVE 識別番号 CVE-2014-2525 に割り当てられています。

詳細

タグ付き YAML の中で文字列がパースされる際に、特殊な文字列がヒープオーバーフローを引き起こし、任意のコードが実行される可能性があります。

例:

YAML.load <code_from_unknown_source>

影響を受けるバージョン

Ruby 1.9.3-p0 以上にはデフォルトの YAML パーサとして psych が含まれています。 0.1.5 以下のバージョンの libyaml にリンクされているすべてのバージョンの psych が影響を受けます。

また、以下の Ruby にはこの問題のあるバージョンの libyaml が同梱されています。

  • Ruby 2.0.0-p451 以前の Ruby 2.0.0
  • Ruby 2.1.1 以前の Ruby 2.1

以下の方法で実行時に使用される libyaml のバージョンを確認できます:

$ ruby -rpsych -e 'p Psych.libyaml_version'
[0, 1, 5]

解決方法

libyaml をシステムにインストールしているユーザは libyaml を 0.1.6 にアップデートすることが推奨されます。 Ruby を再コンパイルする際にアップデートした新しい libyaml を指定してください:

$ ./configure --with-yaml-dir=/path/to/libyaml

システムに libyaml がインストールされていないユーザは、Ruby 同梱の libyaml を使用しているので、 libyaml 0.1.6 を提供している psych 2.0.5 にアップデートすることが推奨されます:

$ gem install psych

また、Ruby を 2.0.0-p481、Ruby 2.1.2 またはより新しいバージョンにアップデートすることでも、同梱の libyaml が更新されます。

更新履歴

  • 2014-03-29 10:49:25(JST) 初版
  • 2014-03-29 18:45:00(JST) 2版
  • 2014-05-09 12:00:00(JST) 3版