作者: 藤岡和夫
日時: 2006/6/05(21:44)
On Mon, 05 Jun 2006 00:34:40 +0900
"Bruce." <kbk@...> さんwrote:

> もう一箇所、これはXSS脆弱性とは関係ありませんが、
> 環境変数の値をとってきてそれをそのまま使っているところがありますが、
> これもディレクトリトラバーサルなどの攻撃を受ける元になります。

 ディレクトリトラバーサルはCGIパラメータからパスを受けとる場合ですよね。
この場合は単にパスを環境変数から受け取るだけ。これは攻撃のしようがないと
思いますが。

> 基本的に、「外部から入ってきたもの」を信用してそのまま使っては
> いけません。Perlなら-Tオプションつけるとその辺チェックしてくれます。

 このtaintedっていうのが、perlsecを眺めてもわかりにくいのですが、-Tオプ
ションをつけても何の問題もないようですね。コマンドラインでもCGIでも。

 もう少し勉強してみます(^^;)

 昔々のPerlプログラミング初版に、taintperlのお話があって、taintという言
葉は昔から知っているのですが、スタンドアローン(より正確にはクライアント
)のマシンしか使わない自分とは関係ないと思ってきた。

「コマンドライン引数、環境変数、それに外部からの入力すべてに、汚染されて
いる(tainted)という印をつける。そのようなデータは、直接、間接を問わず、
サブシェルを起動するようなコマンドや、ファイル、ディレクトリ、プロセスを
変更するようなコマンドに使ってはならない。同様にevalに引数に含めてはなら
ない---もしこれを許してしまうと、setuidで得られた権限のもとで、任意の
Perlの文を実行できてしまうので危険極まりない。」

 原著は1990年、それほど昔からセキュリティの問題はあったのか、うーむ、イ
メージは掴めたが・・・

> わかっている人がわかって使っているなら問題はないです。
> しかし、ものが公表されるものですから、どこで伝播して
> 広まっていくか影響は読めません。「悪貨は良貨を駆逐する」では
> ありませんが、薦められないコードは意外に広まっていくものですから
> (悪事千里を走る? ;-))、注意しておくにしくはないと思います。

 セキュリティについて、勉強できてよかった(^^;)デスクトップからWebに進出
できるかもしれない(^^)Text WorldのサイトでCGIの実験をしたいと思っていた
から、今後の参考になりますね。

藤岡 和夫
kazuf@...
TS Networkのために http://homepage1.nifty.com/kazuf/