図1[拡大表示]を見てほしい。これは,わずか10行ほどのスクリプトを含むHTMLファイルである。ところが,これをInternet Explorer(IE)で閲覧すると,とんでもないことが起こる。Windows 2000/XPマシンにバックドアが仕掛けられてしまうのだ。

 実際にソースを見ていこう。まず,6行目で攻撃者がインターネット上に用意したサーバから「bkdr.exe」という実行形式のファイルをダウンロードする。これが完了すると,「Welcome!」というメッセージをポップアップ表示する。そして,「OK」を押すと,bkdr.exeが実行される。もし,このファイルがバックドア・プログラムなら,冒頭の悲劇が起こる。そして結果的に,マシンはインターネットから,攻撃者に好きなように操作されることになる。しかも,ほとんどのユーザはバックドアが仕掛けられたことを気づかないだろう。

 なぜ,いとも簡単にこんなことができるか。それは,スクリプトがローカルにあるActiveXコンポーネントを呼び出して,その機能を利用することができるからだ。ActiveXコンポーネントとは,機能単位にまとまったプログラムの部品である。Windows 98以降のWindowsは,ファイルやレジストリ操作,プログラムの実行,データベースへのアクセスなどが可能なActiveXコンポーネントを標準で備えている(図2[拡大表示])。

図1●スクリプトを使った不正アクセスの例。
Webサイトにアクセスしたマシンにバックドアを仕掛ける。VBScriptの例を示したが,JScript(Microsoft版JavaScript)でも同様の攻撃が可能
 
図2●スクリプトとローカルのActiveXコンポーネントを使うことで可能な操作

 スクリプトでアプリケーションを操作することもできる。代表的なのが米Microsoft社のOfficeだ。例えば,スクリプトでOutlookを操作し,メールを送ることもできる。

 つまり,HTML中にローカルのActiveXコンポーネントやOfficeの機能を利用する不正なスクリプトが含まれていると,Webにアクセスしただけで,攻撃者の思い通りにパソコンの設定を変更されたり,ファイル操作やメール送信を実行される恐れがあるのだ。この場合,インターネットから一切,怪しげなActiveXコンポーネントをダウンロードすることもない。このため,気づく可能性も低い。

破壊的な四つのシナリオ

 では,どのような攻撃が考えられるだろうか。想像力を働かせればいくらでも考えられそうだが,ここでは悪質な四つの攻撃を示してみる。

 一つ目は,図1に示した攻撃である。具体的に説明すると,この攻撃はスクリプトでローカルのActiveXコンポーネントを呼び出し,このActiveXコンポーネント経由でWindows 2000/XPが標準で備えるTFTPクライアント・プログラムを動かす。TFTPクライアントにパラメータを与えて実行することで,ファイルをダウンロードする。そして,そのダウンロードしたプログラムを実行する,という手口だ。冒頭ではバックドア・プログラムを例に出したが,ウイルスなどの悪意あるプログラムを送り込んで実行することも可能である。

 利用するActiveXコンポーネントは,Windowsが標準で備えるスクリプト実行環境Windows Scripting Host(WSH)だ。WSHを使えば,アプリケーションの実行やレジストリ操作,ネットワーク・ドライブのマッピングなどが可能になる。

図3●レジストリ操作(a)とファイル操作(b)をするスクリプト例

 二つ目として,ウイルス対策ソフトを起動しないようにする攻撃が考えられる。ウイルス対策ソフトなど,OSの起動と同時に立ち上がるアプリケーションはスタートアップ・フォルダにショートカットが登録されているか,レジストリに登録される。スクリプトとActiveXコンポーネントを使って,ウイルス対策ソフトの起動に関するファイルやレジストリを削除するのだ。すると,次回からウイルス対策ソフトが常駐しなくなる。レジストリの操作は図3(a)[拡大表示]のようにWSH経由で行う。ファイルは図3(b)[拡大表示]のように,File System Object(FSO)と呼ばれるActiveXコンポーネントを利用して操作する。

 ウイルス対策ソフトはバックグラウンドで動き,タスクバーに小さなアイコンが表示されるだけだ。このため,起動していなくてもユーザの多くは気づかないだろう。ウイルス対策ソフトが起動していると思い,安心してメールを見ていると,いつの間にかウイルスに感染していたということにもなりかねない。

 三つ目の攻撃は,受信メールの削除である。FSOを使ってファイルを操作し,メールが格納されているディレクトリを削除すればよい。同様の方法で,友人や取引先のメール・アドレスを登録したアドレス帳のファイルをすべて消すこともできる。

図4●Internet Explorerのセキュリティ設定。
インターネット・ゾーンにおいてアクティブ・スクリプトを許可し,安全マークのないActiveXコントロールの実行を許可しておくと図1のプログラムが動く

 四つ目はレジストリを改変してOSを起動不能にする攻撃である。これは,WSHを使って起動に必要なレジストリを改ざんするだけで可能になる。

IEのデフォルト設定では禁止

 ただ,少し安心してほしい。ここまで述べてきた攻撃を,すべてのユーザが受けるわけではない。というのも,このスクリプトがデフォルト設定のIEで動くわけではないからだ。これらの攻撃が可能になるには,IEのセキュリティ設定が特別な状態になっている必要がある。

 具体的には,IEのセキュリティ設定の「スクリプトを実行しても安全だとマークされていないActiveXコントロールの初期化とスクリプトの実行」と「アクティブ スクリプト」が許可されていないと,うまく働かない(図4[拡大表示])。前者はローカルにあるActiveXコンポーネントを実行できるかを決定する設定,後者はVBScriptやJScript(JavaScriptのMicrosoft版)の実行の可否を決める設定である。

 IEではこれらセキュリティの設定を「インターネット」「イントラネット」「信頼済みサイト」「制限付きサイト」という四つのゾーンに分けて決めている。「インターネット」は一般のWebサーバに適用する設定である。「イントラネット」はイントラネットのサーバ用,「信頼済みサイト」と「制限付サイト」はユーザが明示的に指定した信頼できるサイトと,信頼できないサイト用の設定である。デフォルトでは「信頼済みサイト」「イントラネット」「インターネット」「制限付サイト」の順で機能が制限されていく。

図5●危険な設定を推奨するWebページの例。
画面例まで出して示し,危険性を一切伝えていない

 インターネット上にある数多くのWebサイトをアクセスする場合,信頼済み/制限付きサイトに登録していなければ,適用されるのは「インターネット」ゾーンの設定である。IEのデフォルト設定では,「インターネット」ゾーンで「アクティブ スクリプト」は許可しているものの,「安全だとマークされていないActiveXの実行」は許可していない。このため,デフォルト設定のままだと,ローカルのActiveXコンポーネントが動かず,前述した不正なスクリプトが実行されることはない。

いいかげんなWeb管理者

 では,このような不正なスクリプトの脅威は恐れなくてよいのか,と言えばそうではない。インターネットを日々利用していると,セキュリティ設定が甘くなる可能性があるのだ。いったん甘い設定をしたら,それを新たに見直すことはほとんどない。

 日々の利用で設定が甘くなるのは,設定を甘くしないと使えないサイトが少なからずあるからだ。実際,「安全マークのないActiveXの実行」を許可するように求めているサイトは山ほどある。検索サイトでこの設定を推奨しているサイトを調べると,100以上のサイトが容易に見つかる。Webページを作る側が,いかにこの問題に対してルーズかがわかる。

 図5[拡大表示]はその典型例だ。サービス利用のための設定として,画面例まで示している。「安全マークのないActiveXの実行」を許可した場合の問題点はまったく記述されていない。このようないいかげんなWeb管理者によって,スクリプト被害の危険性が拡大しているのだ。セキュリティ設定の甘いユーザが増えるほど,それを狙って攻撃を仕掛けてくるクラッカーも増える。

(中道 理,藤田 憲冶)