浮動小数点数パースにおけるヒープオーバーフロー (CVE-2013-4164)

Ruby において、浮動小数点数のパース時にヒープオーバーフローが発生しうるという問題が報告されました。 この脆弱性は CVE-2013-4164 として CVE に登録されています。

脆弱性の詳細

文字列を浮動小数点数値に変換する際に、意図的にヒープオーバーフローを発生させる文字列を構成できることが判明しました。 これによって、セグメンテーションフォールトによるサービス拒否攻撃を行うことができ、また、潜在的には不正なコードの実行を可能とする可能性があります。 出所不明なデータを受け付けて浮動小数点数値に変換する全てのプログラム (例えば JSON 形式での入力を受け付けるものなども該当します) が、この脆弱性の影響を受けます。

例えば、以下のようなコードが該当します:

untrusted_data.to_f

しかし、これに限らず、外部のデータから浮動小数点数値を生成する全てのコードに問題があります。例としては以下のようなものです:

JSON.parse untrusted_data

この不具合は、CVE-2009-0689 として過去に報告されているものに類似しています。

この脆弱性を含むバージョンの Ruby を利用している全てのユーザーに対して、修正後のバージョンへの更新を推奨します。

影響するバージョン

  • Ruby 1.8.6 patchlevel 230 以降の全ての Ruby 1.8 系列
  • Ruby 1.9.3 patchlevel 484 より前の全ての Ruby 1.9 系列
  • Ruby 2.0.0 patchlevel 353 より前の全ての Ruby 2.0 系列
  • Ruby 2.1.0 preview2 より前の全ての Ruby 2.1 系列
  • trunk のリビジョン 43780 より前の全ての Ruby 開発バージョン

回避策

この脆弱性を修正したバージョンである、Ruby 1.9.3 patchlevel 484、Ruby 2.0.0 patchlevel 353、もしくは Ruby 2.1.0 preview2 へのアップグレードを行ってください。

なお、Ruby 1.8 系列は既にメンテナンスが終了しており、今回の脆弱性を修正したバージョンをリリースする予定はありません。

クレジット

この脆弱性は Charlie Somerville によって報告されました。

更新履歴

  • 2013-11-22 12:03:00(JST) 初版
  • 2013-11-22 14:46:00(JST) 2版
  • 2013-11-23 07:45:00(JST) 3版
  • 2013-12-10 21:09:38(JST) 4版