--pgp-sign-Multipart_Sat_Aug_23_17:07:29_2008-1 Content-Type: text/plain; charset=ISO-2022-JP 前田です。 REXMLにDoS脆弱性が発見されましたのでお知らせします。 この報告は以下のURLでも参照可能です。 * <URL:http://www.ruby-lang.org/ja/news/2008/08/23/dos-vulnerability-in-rexml/> = REXMLのDoS脆弱性 RailsでXMLリクエストのパースに使用されているREXMLに、DoS脆弱性が発見さ れました。XML entity explosion attackと呼ばれる攻撃手法により、ユーザか ら与えられたXMLを解析するようなアプリケーションをサービス不能(DoS)状態 にすることができます。大部分のRailsアプリケーションはこの攻撃に対して脆 弱です。 == 影響 攻撃者は、以下のように再帰的にネストした実体参照を含むXML文書をREXMLに 解析させることにより、サービス不能(DoS)状態を引き起こすことができます。 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE member [ <!ENTITY a "&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;"> <!ENTITY b "&c;&c;&c;&c;&c;&c;&c;&c;&c;&c;"> <!ENTITY c "&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;"> <!ENTITY d "&e;&e;&e;&e;&e;&e;&e;&e;&e;&e;"> <!ENTITY e "&f;&f;&f;&f;&f;&f;&f;&f;&f;&f;"> <!ENTITY f "&g;&g;&g;&g;&g;&g;&g;&g;&g;&g;"> <!ENTITY g "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"> ]> <member> &a; </member> == 脆弱性の存在するバージョン === 1.8系 * 1.8.6-p287以前のすべてのバージョン * 1.8.7-p72以前のすべてのバージョン === 1.9系 * すべてのバージョン == 対処方法 問題を修正するためのモンキーパッチ(実行時にライブラリを修正するパッチ)をダウンロードしてください。 * ((<URL:http://www.ruby-lang.org/security/20080823rexml/rexml-expansion-fix.rb>)) REXMLを使用する前にrexml-expansion-fix.rbをロードするように、あなたのアプリケーションを修正してください。 require "rexml-expansion-fix" ... doc = REXML::Document.new(str) ... Railsアプリケーションを利用している場合、rexml-expansion-fix.rbをロード パス上のディレクトリ(たとえばRAILS_ROOT/lib/)にコピーし、次のような行を config/environment.rbに追加してください。 require "rexml-expansion-fix" Rails 2.1以降の場合、rexml-expansion-fix.rbを RAILS_ROOT/config/initializersにコピーするだけで自動的にロードされます。 デフォルトでは、XML実体参照の展開は10000回に制限されます。 この値は、REXML::Document.entity_expansion_limit=により変更可能です。 REXML::Document.entity_expansion_limit = 1000 この修正はgemパッケージとして提供され、Railsの将来のバージョンで利用さ れるようになる予定ですが、ただちに対策されることを推奨します。 == クレジット この脆弱性はACROS SecurityのLuka Treiber氏とMitja Kolsek氏により Ruby Security Teamに報告されました。 脆弱性を修正するためのモンキーパッチはRails Core TeamのMichael Koziarski氏により作成されました。 --pgp-sign-Multipart_Sat_Aug_23_17:07:29_2008-1 Content-Type: application/pgp-signature Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) iD8DBQBIr8VDZ3GizHGDKdwRAmTXAKCOL7DJWZBYumV1eRuFkn75LYQykACgsBqy d32aiY7o2PwuWnUQjcxTmkQ= =Zi+h -----END PGP SIGNATURE----- --pgp-sign-Multipart_Sat_Aug_23_17:07:29_2008-1--