BT

Ruby の BigDecimal にサービス拒否(DoS)脆弱性

| 作者: Werner Schuster フォローする 6 人のフォロワー , 翻訳者 吉田 英人 フォローする 0 人のフォロワー 投稿日 2009年6月14日. 推定読書時間: 2 分 |

原文(投稿日:2009/6/10)へのリンク

Ruby 1.8.x すべてのバージョンにサービス拒否(Denial of Service:Dos)脆弱性が発見された

BigDecimal オブジェクトから Floatへの変換処理において,攻撃者がセグメント違反(Segmentation fault)を発生させることができる,という問題がある。

ActiveRecord がこのメソッドに依存しているため,大部分のRailsアプリケーションが影響を受ける。ただしRails固有の問題ではない。


Riding Rails ブログもこの脆弱性を取り上げている。

まもなく登場する Rails 2.3.3 リリースには,この脆弱性に関する潜在的な攻撃手段範囲を制限するような,いくつかのマイナーチェンジが含まれている。しかしこれらのマイグレーションでも,すべての潜在的な攻撃方法を防止することはできないので,可能な限り早く ruby インストレーションのアップグレードを実施すべきである。

ブログはNZKoz' bugdecimal-segfault-fix についても言及している。これはRubyインストレーションを即時にアップグレードできないユーザ向けの一時的なフィックスであるが,アプリケーションの動作を損ねる可能性があるため,アップグレードが唯一正式な解決手段であることに変わりはない。

すべての Ruby 1.8.x バージョンがこの問題の影響を受ける。対策済のRubyバージョンはRuby 1.8.6-p369(1.8.6 FTP ダウンロードリンク)以降およびRuby 1.8.7-p173(1.8.7 FTP ダウンロードリンク)以降である。

この問題はJRubyにも関係する。トラックBugJRUBY-3744に次のような説明がある。

JRuby にも同様に影響があるようだ。クラッシュはしないが,無限ループへのスタック(stuck)が発生する。

動作内容はこのサンプル出力に記録されている。
試験した結果,bigdecimal-degfault-fixで使用された解決策がJRuby でも一時的なフィックスとしては有効なことが分かった。これはBigDecimalクラスを拡張して,過大な数値が使用された場合に例外をスローするように修正するものだ。このフィックスコードはJRuby スレッドをbusy状態に留めずに即座にフェールさせる。そのためフィックスコードの既定値を超える大きな数値の処理を必要とするアプリケーションの挙動を損ねるのは明らかである。

Ruby 1.9.xユーザにはこの問題は影響しない。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT