[PHP-users 12049] Re: シェルコマンドは使わない方がいい?

UNO Shintaro php-users@php.gr.jp
Thu, 05 Dec 2002 23:29:35 +0900


BAC さん wrote:
> また、今回の例で見ると、
>
>> $files = shell_exec("ls -cm (Path) ");
>> exec("mkdir (Path)");
>> exec("rm -fr (Path)");
>
> これらのコマンドが本当に意図したものを指しているか、作成者が把握できま
>せん。パスはどうなっているか、それはPHPソース作成時から変更されることは
>ないのか、など。一番目にカレントディレクトリにパスを通しているようなユー
>ザに対して/tmpなどセキュリティの低いところにlsという名前のシェルスクリプ
>トを用意して眠り爆弾のようにいつかそれが起動されるのを待つ、というタイプ
>のトロイテクニックもあります。

みつき@so-net さん wrote:
>シェルに渡すパスは具体的にはApache以下のパス(固定)+ユーザーPC固有の文字列
>をMD5暗号化したパスとなります。
>/public_html/user_dir/XXXXYYYY(英数字)
>固有の文字列はユーザー入力ではなく、PC内のチップから自動的に取得しますので
>ユーザーの介入はありません。

上記のやりとりの部分は、BACさんのおっしゃったことがみつきさんにうまく
伝わっていないように見えましたので、ちょっと補足を。

この下りでBACさんがおっしゃっている「パス」は、みつきさんが「(Path)」
と表現されているもののことではなく、外部コマンド検索に使われるコマンド
サーチパスのことです。
「ls」「mkdir」「rm」が絶対パスをつけずに呼び出されているので、どこか
のディレクトリに仕掛けられた同名の別プログラムを、作成者が呼び出したい
外部プログラムの代わりに実行してしまう危険性がある、という話です。

-- 
UNO Shintaro, 宇野 信太郎
mailto:uno@venus.dti.ne.jp
http://www.venus.dti.ne.jp/~uno/