ダイヤルアップがインターネット接続の主流であった頃は、インターネットを使用する間だけの接続だったために接続している時間は短いものでした。ところが、最近のADSLやCATV等の常時接続では、常に繋ぎっぱなしの状態で通信を待機しています。
常時接続はユーザがインターネットを使用する際に大変に便利な接続形態ですが、常に繋がっているため外部からの不正アクセスを許す可能性があります。
国内の常時接続サービスの主流は、プロバイダのサービスを巨大なLANとして構築し、各ユーザはそのLANに接続してサービスを受ける方式になっています。インターネットはプロバイダのサーバの外側にあるので、インターネットからの直接攻撃は受けませんが、同一プロバイダのLANに接続された他のユーザからの不正アクセスを受ける可能性があります。
現行の常時接続サービスでも、ルータを使用せずに直接モデム接続をしているユーザ同士の間では、器材のOSが前世代でAdministratorの権限に制限をかけていないと外部から接続できるものが存在しているようです(この条件の場合、Administratorの権限がかかっていて、内部に侵入できなくても存在は見えるようです)。
また、必要に応じてユーザにグローバルIPアドレスを割り当てる常時接続サービスがありますが、この場合は一般の公開サーバと同じ接続形態ということで、危険性も同じということになります。
対策としては、IP変換やパケットフィルタリング機能を持つダイヤルアップルータやブロードバンドルータを簡易ファイアウォールとして使用する方法と、ホームユーザ向けの廉価ハードウエアファイアウォール、アンチウイルスソフトと一体になったソフトウエアファイアウォール製品を採用する方法等があります。
クラッキングによる侵入やなりすましによるデータ奪取の他に、システムの設定ミスにより、情報が外部へ流出してしまう事故も後を絶ちません。
Webサーバの取扱いミスにより、顧客データのxlsやcsvファイル等を閲覧可能なディレクトリに置いてしまい、それらファイルが外から丸見えになっている場合があります。それを防止するには、各ディレクトリにindex.htmlを入れ「アクセスできません」と書いておきましょう。
また、各ユーザ画面でユーザー自身の登録データを確認できる仕組みを用意しているサイトがありますが、それぞれの個人情報サイトのURL末尾に会員番号が入っていて、この番号を適当に変更することで、まったくアクセス権が無い他人のデータを見ることができる場合もあります。
さらに、得意先にまとめてお知らせメールを送信するような場合、本来BCCに入れなければならない送信先各社のメールアドレスを、まとめてTOやCCに入れてしまい、得意先にそれらの競合企業とも取引をしていることが漏れ、契約を打ち切られるようなケースも、情報漏洩事故の1つです。
*xls:エクセルファイル
*csv:データフォーマットの形式。データ表やリストが格納されているケースが多い

情報流出
外からディレクトリに置かれたファイルが丸見えになっている例。
Webサイトにおいて、現在ではコンポーネントペースのページなどが主流になりつつありますが、それでもCGI(Common Gateway Interface)やSSI(Server Side Includes)を使用したページも多く存在します。これは、単純な処理かつ負荷の低い(極端に利用度が上がらない)ページなどで利用されています。また、WindowsではIIS上で稼動するASP(Active Server Pages)が中心となっています。
(1)スクリプトの危険性
Webにおけるスクリプトは、CGIやSSIを利用するときにファイル奪取等の危険性が発生します。CGIスクリプトを作成した際、特に悪意を持って作成していなくとも、問題が発生する場合があります。
まず、次の簡単なコードを見てください。
system('grep $arg /data/data-txt');
これは問題を判りやすくするために簡単なものにしています。FORMを使用したページから引き渡されたCGIスクリプトがコマンドを実行し、その結果を返すというものです。このコードの問題は、次の引数を渡された場合にあります。
; cat /etc/passwd ;
これは、$argに対して; cat /etc/passwd ;が引き渡されることになります。 つまり、CGIスクリプトでは次の行が実行されることになります。
system('grep ; cat /etc/passwd ; /data/data-txt');
もちろん、grepコマンドや/data/data.txtの部分は";"で区切られているためエラーになりますが、cat /etc/passwdの部分は動作します。
httpdはデフォルトではnobodyなどのユーザ権限で動かす場合が多いようです。しかし、httpdはftpdのAnonymous FTPのようにchroot()を行いません。これが意味するものは、ユーザが読めるファイルはCGI経由で読めるということです。このため、例のようにパスワードファイルやユーザのファイルがWeb経由で閲覧できるのです。
上記のように、悪意を持って書いたものではないスクリプトであっても思わぬところでセキュリティホールとなる可能性があるのです。
同じような危険性がSSIにもあります。execは特に危険なため必要でなければは禁止しておく必要があります。最近のApache httpd等はデフォルトで禁止となっています。
<!--#exec cmd="コマンド"-->
(2)メタキャラクタ
UNIXシェルにはメタキャラクタと呼ばれるものがあります。コマンドのパイプを行う"|"やリダイレクトを行う">"などです。CGIスクリプトにおいて、最低限行わなければならないことは、これらメタキャラクタを排除することです。
必ず排除すべきメタキャラクタは次の4つです。
;
|
&
\
(3)権限
CGIスクリプトを動作させるとき、最大の問題は権限の付与です。
たとえば、何らかの処理を行うときロック機構を使用しますが、このときに作成するロックファイル名をたとえば会員番号のようなFORMの特定のフィールドに入力されたデータを使用している場合、本来入力するデータではなく/etc/passwdのような特定のファイル名を入力した場合を考えてください。
当然、処理は失敗しますが、処理終了時にロックファイルを削除します。しかし、このロックファイル名が/etc/passwdであればこのファイルを削除することになるのです。
この問題は、httpdがchroot()を行わないということに加えてスクリプトを実行させる権限を悪用したものです。
WindowsとIISにおいて使用されるASPでもCGI同様の問題が発生する可能性があります。
たとえば、Site Server 3.0をインストールする際、 デフォルトのインストールでは showcode.asp,viecode.asp,codebrws.asp に対して適切なアクセス権が設定されずにインストールされます。
これらのスクリプトを利用することによって、 システム上のファイルにアクセス出来てしまいます。
さらに、ファイルとその内容を見ることができるだけでなく、 ディレクトリの移動も可能になれば、 さらに多くの情報を収集することができます。
| 前へ | ホームへ |
© 2002 Information-technology Promotion Agency, Japan. All rights reserved.