Rails が即死する REXML の DoS 脆弱性について

先日公開された、REXML の脆弱性ですが、「あーそうなんだ、でもうちの Rails のサービスじゃ REXML でパースする処理なんて書いてないから別にいいや」とか思っている方、大変危険です。みんなパッチあてようよ!

XML entity explosion attackと呼ばれる攻撃手法により、ユーザから与えられたXMLを解析するようなアプリケーションをサービス不能(DoS)状態にすることができます。大部分のRailsアプリケーションはこの攻撃に対して脆弱です。

REXMLのDoS脆弱性

と書いてある通り『大部分のRailsアプリケーションはこの攻撃に対して脆弱』なのです。たぶん今世の中にある Rails な Web サービスの9割が現状でも、ごくシンプルな攻撃方法でサービスがダウンします。昨日の時点では、自分のところ(Rails 1.x, 2.x なサービス全部)も、知り合いのとこのサービスも、簡単な POST 1リクエストでお手軽に落ちてしまっていました。落とす方法は、Rails をそれなりに知ってる人なら、あああんなリクエスト送ると落ちるな、とすぐ察しがつくと思います。

というわけで、Rails でサービスを提供している方は、即座にオフィシャルで公開されている REXML の脆弱性を防ぐモンキーパッチを当てましょう。また Rails 2.1 な場合は、takiuchi さんの提供している、[Updated] REXMLの脆弱性への対応 - Hello, world! - s21gの gem を使うのも良いでしょう。