浮動小数点数パースにおけるヒープオーバーフロー (CVE-2013-4164)
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版
最近のニュース
Ruby 4.0.0 リリース
Ruby 4.0.0 が公開されました。 Ruby 4.0 には “Ruby Box”、”ZJIT” ほか多数の改善が含まれています。
Posted by naruse on 25 Dec 2025
サイトのアイデンティティの再設計
サイトの包括的なデザインのアップデートを発表できることを嬉しく思います。今回の更新ではTaeko Akatsukaさんにデザインを担当していただきました。
Posted by Hiroshi SHIBATA on 22 Dec 2025
Ruby 4.0.0 preview3 リリース
Ruby 4.0.0-preview3 が公開されました。
Posted by naruse on 18 Dec 2025
Ruby 4.0.0 preview2 リリース
Ruby 4.0.0-preview2 が公開されました。Ruby 4.0では、Unicodeバージョンの17.0.0へのアップデートなど様々な改善が行われています。
Posted by naruse on 17 Nov 2025