[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-devel:15539] Re: Test package of xdvik-ja 22.40t-j1.12 is available



>> On Fri, 31 Jan 2003 17:11:42 +0900
>> kohda@xxxxxxxxxxxxxxxxxxxx (Atsuhito Kohda) said as follows:

>えーと Perl は理解できないので間違ってるかもわかりませんが,この続き
>も読まれましたか?

すみません,読み落してました.

BTS> Here is a simple test that illustrates my concern; you can try it out on
BTS> your system.  First, create a world-writable directory and change to it.
BTS> Then, run the following Perl program:
BTS> 
BTS>     use File::Temp qw(tempfile);
BTS>     ($fh, $filename) = tempfile("testXXXXXX", SUFFIX => ".dvi");
BTS>     print "$filename\n";
BTS>     scalar(<>);
BTS>     open TEMP, ">", $filename;
BTS>     print "Done\n";
BTS> 
BTS> The program will create a temporary file, print its name, and wait for a
BTS> carriage return.  Without hitting carriage return, open another window
BTS> and switch to an unprivileged user like nobody.  As nobody, you should
BTS> be able to replace the temporary file by a symbolic link pointing at a
BTS> file owned by (and only writable by) your non-nobody account.  If you
BTS> do so, then hit carriage return in the first window, you will overwrite
BTS> the file pointed to.

という部分ですね.

この攻撃が成立するためには,xdvi-pl が world-writable かつ sticky bit 
が指定されていないディレクトリに,一時ファイルを作成する必要があります.

私の改変した xdvi-pl は,環境変数 TMPDIR で指定されたディレクトリ,ま
たは /tmp に対して一時ファイルを作成します.Debian では /tmp は,

  $ ls -ld /tmp/
  drwxrwxrwt   21 root     root         4096  1月 31 18:23 /tmp/

となっているはずですから,sticky bit の効果により,権限を持っていない
ユーザーは symbolic link を作ることができず,攻撃は失敗するはずです.
つまり,言い換えれば,コマンドの tempfile を利用している xdvi-sh と同
じ程度には安全,ということです.

BTS に投稿されているパッチから想像すると,旧 tetex-bin 付属の xdvi-pl 
は,current working directory に一時ファイルを作成していたようですから,
この攻撃が成功する可能性があったのでしょう.

;; tempfile を呼び出すときに,DIR を指定せずに template を指定すると,
;; そうなってしまうようです.

というわけで,一応,安全だと判断して良いと思いますが,どうでしょうか.

-- 
土屋 雅稔 ( TSUCHIYA Masatoshi )