Posted by tenderlove on 22 Nov 2013
Translated by unak
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版