作者: Bruce.
日時: 2006/6/05(23:17)
Bruce.です。

藤岡和夫 さんは書きました (2006/06/05 21:44):
>> もう一箇所、これはXSS脆弱性とは関係ありませんが、
>> 環境変数の値をとってきてそれをそのまま使っているところがありますが、
>> これもディレクトリトラバーサルなどの攻撃を受ける元になります。
> 
>  ディレクトリトラバーサルはCGIパラメータからパスを受けとる場合ですよね。
> この場合は単にパスを環境変数から受け取るだけ。これは攻撃のしようがないと
> 思いますが。

環境変数といえども外部からの情報になりますので、どこで操作されるか
わからないと考え、念には念を入れるのが肝要ということです。

実際、taint検査を行っているときには、PATHをスクリプト中で
自分で陽に再設定しない限り、外部プログラムの起動もチェックされます。

>> 基本的に、「外部から入ってきたもの」を信用してそのまま使っては
>> いけません。Perlなら-Tオプションつけるとその辺チェックしてくれます。
> 
>  このtaintedっていうのが、perlsecを眺めてもわかりにくいのですが、-Tオプ
> ションをつけても何の問題もないようですね。コマンドラインでもCGIでも。

今回のXSS脆弱性に関しては、現状のPerlのtaintチェックには関係ない
部分ですからね(プロセスを起動したりしているわけではないので)。

ところで CGI.pm の情報ですが、

Perlで作るCGI講座 - CGI.pm を使ってみよう - futomi's CGI Cafe
http://www.futomi.com/lecture/form/cgi-pm.html

に簡単な使い方の説明が、

CGI - 簡単なCGI(Common Gateway Interface)クラス
http://perldoc.jp/docs/modules/CGI.pm-2.89/CGI.pod

に日本語ドキュメントがあります。ただし、

C:\server>perl -MCGI -e "print $CGI::VERSION"
3.15

が現行のバージョンですので、変更点はそれなりにあるかも
知れません。

-- 
木村浩一
  I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
  mail kbk@...
	web  www.kt.rim.or.jp/~kbk/index.html#zakkicho
	     homepage3.nifty.com/farstar/