CGIの危険性


■ CGIを使ってあなたの情報を得る

HPでよく見かけるカウンタ、掲示板、チャット、ログ解析等に使うCGIの話です。HPの管理者はHPをだたひたすら作っているだけでは悲しくなってくるものです。そして、自分の掲示板やチャットを置いてHPを盛り上げようとします。しかし現状はなかなか書き込んでくれる人はいません。そのためカウンタを置いて本当に人が見に来ているのか?知りたくなります。また、いったいどんな人が見にきているのか、どのくらいの人が見に来ているのかと気になってログ解析をしたりするものです。簡単にいうと、このようにHP管理者がHP観覧者と接することを可能にするのがCGIで、そのためHP管理者はCGIを使いたがります。
さてさて、ここで興味深いのがログ解析です。このCGIを使って今このページを見ているあなたのどんな情報が分かるのでしょう?下のリンクをクリックして見て下さい。
http://www.ugtop.com/spill.shtml?
このリンクは厳密にいうと、拡張子がCGIではないのでCGIとはいわないのかもしれないが、SHTMLという拡張子は通常のHPのファイルHTMLの中にCGIを埋め込むことが出来るといったようなものです。ここで、あなたのIPアドレスや、OS、ブラウザ情報などがかかれているでしょうか?CGIを使うとHP観覧者このような情報(環境変数)を得ることが出来ます。そしてこのような環境変数を得るCGIは簡単に作れてしまいます。掲示板、チャットなどCGIまたはSHTMLという拡張子のファイルにアクセスした場合は、このような情報が取られていると思って間違いないです。

またこのような環境変数の他に、簡易ポートスキャンも出来ちゃいます。ポートスキャンというのは、あるコンピュータに対してどんなポートが開いているのか調べることです。ポートって何よ?っていう方は、[ポートについて]を読んで見て下さい。ブラウザのプロキシを無効にして、下のポートスキャンのページの[Quick Scan]を実行してみてください。正しく設定できていれば、すべてのポートはCLOSEDかBLOCKEDになっているはずです。
http://scan.sygatetech.com/


■ IPアドレス抜き

HP管理者は、どんなユーザがHPを見に来ているか、またもしも掲示板荒らしなどにあった場合のためにCGIを使ってHP観覧者のIPアドレスをとっています。しかし上記の環境変数を使っても特殊なPROXYを通している場合、観覧者のIPアドレスをとることが出来ない場合があります(もちろんPROXYサーバのIPアドレスは取れているので、いざという時は追跡できるのですが)。これは特殊なPROXYサーバ設定をしてあるPROXYサーバを経由しているためです。IE のPROXY設定を見ると、HTTP、Secure、FTP、Gopher、Socks がPROXYサーバを経由することが出来ます。そこで、UG(アンダーグランド)なところのHP管理者は何とかHP観覧者のIPアドレスをとろうと、これ以外のプロトコルを使ってIPアドレスを強引にとったりします。telnet:// を使って強引にtelnetクライントをサーバに接続させてIPアドレスをとったりします。telnetは、PROXYを通すことが出来ないので、さすがにIPアドレスが取られてしまします。HPを観覧していたら急にtelnet が立ち上がった時は、生のIPアドレスが取られています。もしも危険を感じたら、ダイアルアップやADSLモデムを再接続してIPアドレスを変えておいた方がいいかも知れません。


■ JavaScriptの環境変数

ちなみにJavaScriptを使って得られる環境変数も書いておきます。

JavaScriptの環境変数

まあ、詳しくは説明しませんが、参考までにどうぞ。


■ cookie?

CGIとかJavaScriptはcookie(クッキー)も使えるので、ついでにクッキーについて書いておきたいと思います。ちなみにクッキーは食べ物のクッキーではありません。名前の由来は特に理由は無いらしいです。。。
CGIはウェブサーバ上の別データファイルを読み書きすることができます。通常、データはCGIなどを用いてサーバー側に記録するのですが、Cookieを用いることにより、クライアント側(ブラウザを起動する側)のハードディスク内に記録することができるようになります。このようにして、クライアント毎に何回HPにアクセスしたなどを勘定することなどが出来ます。

クッキーがクライアントPCのどこに保存されているかというと、WindowsNTの場合
C:\WINNT\Cookies
です。


■ 何故ウェブサーバはCGIが使えないところが多い?

今度は、HP管理者ではなくウェブサーバの管理者の立場に立ってみます。何故、ウェブサーバの管理者はHP管理者にCGIを使わせたくないのでしょう?

まず、初めにあげられることは、HP管理者は[CGIを使ってあなたの情報を得る]で書いたように、CGIを使いたがります。CGIはプログラムで、このプログラムはクライアントPC上ではなくウェブサーバ上で動きます。ということは、もしも一台のウェブサーバの中の100個のHP上でいっせいにCGIを使ったら、ウェブサーバ一台でそのプログラムの処理をしなければなりません。このように、ウェブサーバに負荷が集中してウェブサーバが固まって落ちてしまうかもしれません。そうしたらこのウェブサーバは十分なサービスを提供できないため、ユーザから文句ブーブーになってしまいます。

次にあげられるのは、HP管理者が間違ったプログラムを書いたCGIをHP上にアップロードし、実行してしまうことです。この間違い方が永久に終わらないループプログラムの場合、繰り返し処理を永久に続けるため、ウェブサーバが重くなったり固まります。
また、CGIを利用してメール爆弾や、掲示板荒らしなどの悪さも出来てしいます。 しかし、もっとも危険なのは、CGIがウェブサーバのセキュリティホールをつついてしまうことです。CGIはウェブサーバ上で実行されるため、結構危険です。このセキュリティホールを利用して、ウェブサーバがハッキングされてしまう可能性があります。ハッキングされた場合、どのような被害にあうかは予想もつきません。。。


やはりCGIは危険ですね、ハイ。




■ この読み物の用語集