From: sheepman Date: 2005-09-20T20:56:46+09:00 Subject: [ruby-dev:27226] world writable dir with sticky bit こんばんは、sheepman です。 環境変数 PATH に含まれているディレクトリが、誰でも書き込み出来て かつ sticky bit が立っている場合、 "Insecure world writable dir" などの警告が出ず、ENV["PATH"] も taint されません。これはこういうものなのでしょうか。 $ stat /tmp File: "/tmp" Size: 4096 Blocks: 8 Directory Access: (1777/drwxrwxrwt) Uid: ( 0/ root) Gid: ( 0/ root) Device: 305 Inode: 212161 Links: 21 Access: Tue Sep 20 20:42:07 2005 Modify: Tue Sep 20 20:43:12 2005 Change: Tue Sep 20 20:43:12 2005 $ env PATH=$PATH:/tmp ruby -ve 'p ENV["PATH"].tainted?' ruby 1.8.3 (2005-09-20) [i686-linux] false [ruby-list:33981] では >stickyなディレクトリにあるファイルは所有者以外は削除/変更不可な >ので、親ディレクトリについてはsticky bitが立っていたらo+wでも構 >わないというところでどうでしょうか。PATHに含まれるディレクトリ >自身は、今まで通りstickyは関係なし。 とうことになっていたのですが、[ruby-talk:86273] に関連して 「PATHに含まれるディレクトリ自身は、今まで通りstickyは関係なし」という決まりが 無効になったようです。 考えられる危険なシナリオとして、以下のようなものが考えられます。 1.PATH に world writable dir with sticky bit が含まれている。 2.$SAFE = 1; system("somecommand --version") というスクリプトで、 そのシステムでコマンドが利用可能か、またそのバージョンを確認しようとした。 3.そのシステムには該当コマンドはインストールされていなかった。 4.悪意ある第3者が PATH に含まれているディレクトリに somecommand という名前の、 悪さをするプログラムを置いた。 セーフレベル 1 で防ごうとしていることが、防げていないように見えます。 -- sheepman / TAMURA Takashi sheepman@sheepman.sakura.ne.jp http://sheepman.parfait.ne.jp/