クロスサイトが危ない

 このほか,クロスサイト・スクリプティングと呼ぶ手法を使い,ローカルのActiveXコンポーネントを強制的に実行させられるケースも考えられる。クロスサイト・スクリプティングとは,Webサーバが文字列を適切に処理していない場合に可能になる攻撃である。信頼済みのWebサーバがこの欠陥を抱えていた場合,攻撃者の用意した不正なスクリプトが「信頼済みサイト」ゾーンの設定で動き,ローカルのActiveXコンポーネントが使われる恐れがある。

 IEのデフォルト設定では,「信頼済みサイト」は「安全マークのないActiveXコントロール」の実行が「ダイアログに表示する」になっている。この場合,「安全マークのないActiveXコントロール」が実行される前に実行を確認するメッセージが出る。しかし,このメッセージの意味はわかりにくい。このため,多くのユーザは深く考えずに「はい」を押してしまう。結果,スクリプトとローカルのActiveXコンポーネントが動く。

図6●典型的なクロスサイト・スクリプティングの手法

 図6[拡大表示]がクロスサイト・スクリプティングの典型的な手法を示したものだ。攻撃者が信頼済みのサイト(多くのユーザが信頼済みに登録していると思われるサイト)のURLに,不正なスクリプトをつなげたものをリンク先として登録する。ユーザが,このリンクをたどり指定先のURLにあるファイルにアクセスしようとする。しかし,相手のサーバはスクリプト部分に相当するディレクトリやファイルがないため,ページが見つからない旨のメッセージを返す。この際,エラーを起こすWebサーバが適切に文字列処理をしていれば問題は発生しない。しかしそうでなければ,このエラー・メッセージの「○○というファイルが見つかりません」の○○部分に問題のスクリプトが埋め込まれる。

 Webブラウザはこれをメッセージとは認識せず,スクリプトとして解釈し実行する。信頼済みサイトから送られてきたスクリプトのため,ローカルのActiveXコンポーネントも呼び出してしまう。

 また,アクティブ・スクリプトや安全マークのないActiveXを実行できないように設定していても,この設定をスキップするセキュリティ・ホールが過去に多数見つかっている。最新のパッチでこれらはふさがれているものの,今後も同様のホールが見つからないとは言い切れない。

いつ被害に遭ってもおかしくない

 スクリプトとローカルのActiveXコンポーネントを使った攻撃は,すぐ目の前にある現実の問題である。すでに,ActiveXコンポーネントを悪用した不正なWebページやウイルスは存在する。実際の被害も報告されている(別掲記事「スクリプトを使った有名な攻撃」を参照)。

 ローカルのActiveXを使った不正アクセスで有名なのが,2001年8月に起こった「プライスロト事件」である。この事件は,メディアゲートが運営するオークション・サイト「プライスロト」にアクセスしたユーザのパソコンが起動不能になったというもの。原因はプライスロトのページが何者かに改ざんされ,不正なスクリプトが埋め込まれていたことによる。このスクリプトはWSHを使用し,起動に必要なレジストリを改ざんするものだった。しかも,IE5.5が抱えるセキュリティ・ホールを突き,「安全マークのないActiveXコントロールの実行」が許可されていなくても,レジストリを改ざんすることができた。

表1●VBScriptを作って作成された主なウイルス

 ウイルスも1999年以降,ローカルのActiveXコンポーネントを使った悪質なものが登場し,被害を与えている。代表的なものをまとめたのが表1[拡大表示]だ。

 例えば,2001年5月に発見されたHaptimeは,FSOとWSHを使って感染を広げる。5.01以前のIEとOutlook Expressの組み合わせを使っていた場合,ウイルス・メールをプレビューしただけで感染する。これは,特定のActiveXコンポーネントを,警告なしに実行してしまうセキュリティ・ホールを利用することで実現している。

 ウイルスの実体はスクリプトを埋め込んだHTMLメールである。Outlook ExpressはHTMLメールの解釈にIEのコンポーネントを使っている。このため,IEと同様にHTMLメールにスクリプトを埋め込むことでActiveXコンポーネントの実行が可能なのである。

 具体的な動作は次のようなものだ。まず,感染するとメールの署名ファイルをVBScriptで記述したウイルス・ファイルに書き換える。このとき,ファイル操作にFSOを利用する。そして,ユーザが作成するメールの書式がデフォルトでHTMLメールになるようにレジストリを書き換える。感染したマシンを使ってメールを送るごとに,ウイルス(署名部分)付きのメールを送る。

 このほか,IEではなく,WSH上で直接動くスクリプト・ウイルスもある。これらを若干改造してHTMLに埋め込めば,Webページを見ただけで同様の動作を起こすことが可能だ。

 なかでも最も有名なのがLoveletterウイルスだろう。これは「I Love You」と書かれたメールに付いてくる添付ファイルを開くと感染し,Outlookのアドレス帳に入っているユーザ全員に向けてウイルス付きメールを送信してしまうというものだ。パソコン内のファイル削除という破壊活動もする。OutlookのActiveXコンポーネントとWindowsが標準で持つファイルを操作可能なActiveXコンポーネントなどが利用されている。

 Loveletter同様,WSHを使って動くプログラムにNetlogと呼ばれるウイルスがある。このウイルスは,実行すると適当なIPアドレスを生成し,ネットワーク上でCドライブを共有しているマシンを探す。見つかれば,Jドライブとしてマップする。加えて,スタートアップ・フォルダにウイルスを登録する。破壊活動はしない。

スクリプトを使った有名な攻撃

 スクリプトやActiveXコンポーネントを使った攻撃は,これまでにも何度となくさまざまな雑誌や新聞,Webページで警鐘が鳴らされてきた。

 スクリプト単独での攻撃として有名なものに,ブラウザ・クラッシャと呼ばれるものがある。このスクリプトが記述されたページを開くと,多数のウインドウが開く。あまりにも多くウインドウが開くため,システムが不安定になり,再起動を余儀なくされる事態に陥る(図A-1[拡大表示])。これはIEだけでなくNetscapeなどでも起こる。

 同様の手口で,Webブラウザと関連付けられたメール・クライアントのメール送信画面を多数開く攻撃もある。こちらも同様に再起動が必要になる可能性がある。

 AcrtiveXコンポーネントを使った攻撃では,悪意あるActiveXコンポーネントをインターネットから巧みにダウンロードさせ,これを実行することでユーザの意図しない設定に変えるものが有名だ。この攻撃は非常に危険である。レジストリの操作やファイルの消去,各種設定の変更などあらゆることが可能になる。

 具体的な事件としては,ISP接続のダイヤルアップ先を海外のアクセス・ポイントに書き換える攻撃が知られている(2002年6月号特集2「目の前にあるネットの罠」を参照)。

 この攻撃は,アダルト・サイトによく仕掛けられている。あるアダルト・サイトでは,アクセスすると「18歳以上か」というメッセージが表示される。「はい」と答えると不正なActiveXコンポーネントを勝手にダウンロードする。その後,ページのどこかのリンクを押すと,このActiveXコンポーネントが動く。ActiveXコンポーネントはダイヤルアップ先を書き換え,国際電話経由でISPにつなぐようにする。

 クリックするとActiveXコンポーネントが実行されるのは,図A-2[拡大表示]のような「クリックするとActiveXを実行する」という意味のスクリプトが,ページのさまざまな個所に記述されているからである。筆者が調べたサイトでは,Webページに記載された50以上のリンクすべてに,この仕掛けが施されていた。

図A-1●ブラウザ・クラッシャの画面例。
このほか,デフォルトのメーラのメール送信画面を多数表示する攻撃もある
図A-2●不正なダイヤルアップを実行するActiveXコントロールとそれを制御するVBScript

(中道 理,藤田 憲冶)