まつもと ゆきひろです

以下の脆弱性情報2件を公開します。

簡単に説明すると1.8.2以前のwebrickおよびxmlrpcにDoSを引き起
こす脆弱性が存在するので1.8.3以降にupgradeしてください、とい
う話です。なんらかの事情で1.8.2を使いつづけたい場合にはパッ
チがあります。

  ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.2-webrick-dos-1.patch
  ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.2-xmlrpc-dos-1.patch

なお、以下のレポート2通を英訳してくださる方を募集します。
よろしくお願いします。

------------------------------------------------------

公開日: 2005-11-21

対象バージョン:

  リリース版(1.8.x) - 1.8.2以前のすべてのバージョン(1.8.3で修正)
  開発版(1.9.0) - 2005-07-15版以前のすべて(2005-07-15版で修正)

概要:

  対象バージョンのRubyにおいて、標準添付のHTTPサーバライブラリWEBrickに
  DoS(サービス妨害)攻撃を可能にする脆弱性があります。

対策:

  各バージョンの本脆弱性への対応は以下の通りです。

  リリース版(1.8.x)、開発版(1.9.0) - 最新版にバージョンアップしてください。
  本文書の公開時点での最新バージョンは前述の通りです。

  過去のリリース版(1.6.x) -
  1.6.x以前のRubyにはWEBrickは添付されていないため、この脆弱性に対応した
  リリースはありません。

説明:

  この脆弱性は、Rubyに実装されているユーザレベルスレッドがソケットへの出力
  処理中にスイッチできないことに由来します。

  クライアントがデータを読み取らない状態で、サーバから一定のサイズを越える
  データを出力しようとすると、スレッドが切り替わることなく全ての処理がブロ
  ックします。これを用いて、WEBrickを利用したHTTPサーバに対して攻撃を行い、
  他の接続を一切受け付けない状態にできることが確認されています。最新バージ
  ョンではソケットをノンブロッキングモードに設定することでこの問題を回避し
  ています。

  WEBrickを利用したHTTPサービスを提供しているシステムで、Rubyのバージョン
  アップが必要となります。

リファレンス:

   * [ruby-dev:26405]
   * Ruby-1.8.2に対するパッチ: ruby-1.8.2-webrick-dos-1.patch

謝辞:

  この脆弱性に関して連絡をくださいました、産業技術総合研究所 
  情報技術研究部門の田中哲氏に深く感謝いたします。

------------------------------------------------------
公開日: 2005-11-21

対象バージョン:

  リリース版(1.8.x) - 1.8.2以前のすべてのバージョン(1.8.3で修正)
  開発版(1.9.0) - 2005-07-10版以前のすべて(2005-07-10版で修正)

概要:

  対象バージョンのRubyにおいて、標準添付のXMLRPCサーバに、DoS(サービス妨害)
  攻撃を可能にする脆弱性があります。

対策:

  各バージョンの本脆弱性への対応は以下の通りです。

  リリース版(1.8.x)、開発版(1.9.0) - 最新版にバージョンアップしてください。
  本文書の公開時点での最新バージョンは前述の通りです。

  過去のリリース版(1.6.x) -
  1.6.x以前のRubyにはXMLRPCは添付されていないため、この脆弱性に対応した
  リリースはありません。

  本脆弱性はXMLRPCサーバを単一のスクリプトで実現するための、
  XMLRPC::Serverクラスを対象とします。ApacheなどからCGIを利用して
  XMLRPCサーバを実装している場合は対象となりません。

説明:

  この脆弱性は、Rubyに実装されているユーザレベルスレッドがソケットへの出力
  処理中にスイッチできないことに由来します。

  一定のサイズを越えるデータを出力するメソッドに対してリクエストを行い、
  これをクライアントが読み取らない状態にすると、スレッドが切り替わること
  なく全ての処理がブロックします。これを用いて、XMLPRC::Serverクラスを利
  用したサーバに対して攻撃を行い、他の接続を一切受け付けない状態にできる
  ことが確認されています。

  最新バージョンではXMLRPC::Serverクラスを再実装し、WEBrick::HTTPServer
  クラスを利用することでこの問題に対処しています。

  XMLRPC::Serverクラスを利用したWebサービスを提供しているシステムで、
  Rubyのバージョンアップが必要となります。なお、本脆弱性の対象となる
  バージョンのRubyでは、WEBrickにも同種の問題が確認されているため、
  個別にバッチを適用する場合は、((<[ruby-dev:26405]に対するレポート>))
  のパッチを併せて適用する必要があります。

リファレンス:

  * ((<[ruby-dev:26405]に対するレポート>))
  * Ruby-1.8.2に対するパッチ: ruby-1.8.2-xmlrpc-dos-1.patch

謝辞:

  この脆弱性に関して連絡をくださいました、産業技術総合研究所 
  情報技術研究部門の田中哲氏に深く感謝いたします。