ruby-trunk-changes r30892 - r30896

FileUtils でディレクトリ削除時のセキュリティ強化の修正がありました。

nagachika:r30892 2011-02-18 00:08:36 +0900

iseq->compile_data->err_info が 0(Qfalse)で初期化されているため rb_iseq_load() で例外が発生していたため Qnil で初期化するようにしました。この関数は現在は非公開の API の rb_iseq_s_load() から呼ばれるので iseq gem などを使って使えるようにした時にだけ関係するものです。

svn:r30893 2011-02-18 00:08:37 +0900

version.h の日付更新。

nagachika:r30894 2011-02-18 00:32:55 +0900

同じく iseq のロード時に不正なシンボルを検出した時の例外発生で一時オブジェクトを GC から保護しています。

shyouhei:r30896 2011-02-18 19:42:50 +0900

FileUtils#remove_entry_secure でディレクトリの削除時に、ファイルの種別をチェックしてから実際に削除しはじめるまでの隙間にそのディレクトリを移動されてかわりにシンボリックリンクが作成されるという攻撃に対処しています。File#chmod で他ユーザの書き込み権限を消した後で再度ディレクトリが置き換わっていないかのチェックを追加しています。このメソッドは FileUtils.rm_r に :secure オプションを指定した時に利用されます。
もう公式サイトにも公開されていますね。1.8.7, 1.9.1, 1.9.2 のそれぞれのパッチレベルリリースされていあすのでこちらを参照してアップグレードしてください。 http://www.ruby-lang.org/ja/news/2011/02/18/fileutils-is-vulnerable-to-symlink-race-attacks/