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

[debian-devel:16340] Re: rubyのLOAD_PATH



こんにちは,
 
> > ruby の LOAD_PATH が . を含んでいることが気になっています.他の言語で
> > は通例そういうことはしていないという前例があることから何か脆弱性がある
> > のか,という点が不安です.
> 
> していないという前例って?

念頭にあったのは, $PATH と $LD_LIBRARY_PATH (/etc/ld.so.conf) でした.
perl も python も同様との御指摘ありがとうございます.
 
> perl の @INC にも . が最後にありますよ。
>  % perl -e 'print "@INC\n"'
>  /etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .

よく実行されることがわかっているプログラムで,下記のようなコードがあればリスクがあるかと思います.

[12:50:30]dancer64:tmp> cat a.pl
#!/usr/bin/perl -w

BEGIN {
        eval qq {
        use XXXX ;
        };
        if ($@)
        {
                 print STDERR "feature XXXX not available\n" ;
        }
}
[12:50:34]dancer64:tmp> ./a.pl
feature XXXX not available

> むしろ python のほうが current directory が先頭にあってやばそうです。

exploitを書いてみて,straceで確認してみたのですが,どうも挙動が期待しているものとは違うようです.
この挙動はユーザからみるとけっこう素直かもしれません.
./XXXX として実行した場合と,そうでない場合で処理がわかれているようです.

[12:39:00]dancer64:tmp> apt-listchanges  # /usr/bin/apt-listchangesを実行した場合
Usage: apt-listchanges [options] {--apt | filename.deb ...}
[12:39:33]dancer64:tmp> /usr/bin/apt-listchanges
Usage: apt-listchanges [options] {--apt | filename.deb ...}
[12:39:08]dancer64:tmp> ./apt-listchanges # /usr/bin/apt-listchangesをカレントディレクトリにコピーしてきた場合
hello r00t

hello r00t

Traceback (most recent call last):
  File "./apt-listchanges", line 218, in ?
    main()
  File "./apt-listchanges", line 44, in main
    config = apt_listchanges.Config()
AttributeError: 'module' object has no attribute 'Config'


[12:39:10]dancer64:tmp> cat apt_listchanges.py
print "hello r00t\n"

[12:39:23]dancer64:tmp> cat apt_pkg.py
print "hello r00t\n"



上川
-- 
dancer@{debian.org,netfort.gr.jp}   Debian Project