Internet Watch logo
記事検索
バックナンバー
(10)Web閲覧だけで感染するウイルス対策を考える
[2004/1/9]
(9)セキュリティ修正パッチ適用のススメ(後編)
[2003/12/19]
(8)セキュリティ修正パッチ適用のススメ(前編)
[2003/12/12]
(7)人間の対策はできているか
[2003/12/5]
(6)サービスの取捨選択を
[2003/11/28]
(5)モバイルPCの危険
[2003/11/12]
(4)LAN内部からの汚染をさせない工夫〜穴になりやすい無線LAN
[2003/10/29]
(3)汚染エリア・クリーンエリア、切り分けのススメ
[2003/10/24]
(2)パーソナルファイアウォールのススメ
[2003/10/15]
(1)Blasterの教訓からウイルス対策を考える
[2003/10/10]

新しいウイルス対策を考える

(9)Web閲覧だけで感染するウイルス対策を考える

TEXT:大和 哲

 昨年流行したSlammerやBlasterのように、ネットに接続するだけで感染するタイプのウイルスは、「ウイルスといえば、メールの添付ファイルで送られてきて、開かなければ感染しない」というユーザーの固定観念の盲点を突くもので、衝撃を与えた。コンピュータウイルスの作者が、ウイルスの流行を狙う以上、こうしたユーザーの盲点を突く形で感染を狙うウイルスプログラムは今後も現われるだろう。

 今回からは、ネットに接続するだけで感染する、いわゆる“Blasterタイプ”のウイルスだけでなく、ほかのタイプのウイルスに関しても、ウイルス対策を考えていきたい。

 今回取り上げるのは、かつて流行したコンピュータウイルス、NimdaやRedlofなどの感染パターンだ。ウイルスなどの不正プログラムが感染を広げるために行なう動作を、いくつかのパターンに分類することがあるが、その分類法の1つに「能動攻撃」と「受動攻撃」に分けるものがある。今回は、この「受動攻撃」について考えたい。



感染させられる側がきっかけとなる「受動攻撃」

 受動攻撃とは、「感染のきっかけとなる動作を、感染させられる側が作る」タイプの攻撃だ。

 2001年に流行したNimdaや、最初に確認されてから昨年上旬ごろまでなかなか沈静化しなかったウイルスRedlofというウイルスがある。これらは「受動攻撃」と呼ばれる感染方法を利用したウイルスで、具体的には以下のような形を取る。

  • 利用者がウイルスに感染したWebサイトを閲覧するだけで、自分のPCがウイルスに感染する

 Blasterのように能動的なウイルス感染パターンの場合、ウイルスに感染しているPCが、ネットワーク上の他のPCの特定ポートに感染プログラムのデータを送って感染させる。

 一方、受動攻撃の場合、たとえばNimdaやRedlofでは、感染させられる側のPCがWebを閲覧するためにアクセスする、このことが感染のきっかけになるわけだ。

感染先のPCがコンテンツを読み込むことが感染のきっかけになる「受動攻撃」。コンテンツの中に感染動作用スクリプトがあり、これを読み込むことで、ウイルス本体も読み込み、実行してしまい、感染する



過去のウイルスへの対策はできるのだが…

 Webを閲覧しただけで感染するウイルスのやっかいな点は、Blasterウイルスのように、単純にポートを閉じるというような対策を取れないことにある。

 NimdaやRedlofの例を見るとわかるように、この手の感染方法を利用する場合、感染を行なうきっかけとなるスクリプトはWebコンテンツの中に紛れ込んでいる。

 つまり、感染プログラム自体が、通常のWebコンテンツと同様に、Webで使われるポートを利用してWebコンテンツとしてコンピュータに読み込まれてしまうわけで、これをポートを塞ぐことで対処すれば、Webそのものの利用ができなくなってしまうからだ。

 この手のウイルス感染を予防するには、以下に挙げる対策のいずれかを実行する必要がある。

  • ウイルス対策ソフトのように、パターンマッチングを利用して、Webコンテンツをリアルタイムにチェックして、Webコンテンツを表示する際に、感染スクリプトをコンテンツから削除する
  • セキュリティ修正パッチを利用してセキュリティホール自体をサービスから塞ぐ

 Nimda、Redlofに関してはすでにウイルスプログラムが知られていて、ウイルス対策ソフトのパターンデータベースにも登録されている。従って、ウイルス対策プログラムでWebコンテンツのリアルタイム保護を設定していれば、こうした既知のウイルスの感染予防は問題なくできる。

 また、セキュリティホールを塞ぐ予防法に関しては、たとえばNimdaの場合は、Internet Explorer 6以上を使うか、Internet Explorer 5の場合はSP2 を適用することで感染を防げる。また、Redlofの場合は、2000年にセキュリティ修正パッチ「MS00-075」が「Microsoft VMによるActiveXコンポーネントの制御の脆弱性に対する対策」として提供されているので、これを適用すれば、感染が予防できる。

 ただし、現在のウイルス対策ソフトは、基本的に既知のウイルスで使われているパターンの検索を行なうため、これから作られる未知のウイルスに対する予防としては、威力を発揮することができない。

 では、この手のウイルスがこれから作られる可能性があるのかというと、実を言えばそれがあるのだ。というのも、今現在、この「Webを閲覧しただけで感染する」タイプのウイルスに利用できるWindowsのセキュリティホールが、修正パッチもリリースされずに残っているからだ。



現在残っているセキュリティホール

 問題のセキュリティホールは、2003年11月25日に、中国のLiu Die Yu氏がBugTraqへの投稿で指摘したもの。内容的にはいくつかのInternet Explorerの脆弱性を組み合わせることで、Webを閲覧したPC上に任意のEXEファイルを実行させることが可能というものだ。受動攻撃にも使える脆弱性で、1月9日現在も、Internet Explorer用の修正パッチはりリースされていない。

 具体的に受動攻撃を行なうには、具体的には、最初にMhtRedirParsesLocalFileと呼ばれる方法を使って、IFRAMEの中のローカルファイルをInternet Explorerに解釈させる。このMhtRedirParsesLocalFileとは、以下のような形式にすることで、mhtmlファイルをIFRAME上に展開できるバグだ。

 続いて、BackToFramedJpuと名付けられた、ゾーンをまたがったスクリプト実行に関する脆弱性を利用する。これは、WebサイトがFRAMEやIFRAMEを含んでいる場合、インターネットゾーン、ローカルゾーンといったセキュリティ上のゾーン分けが無効になってしまうバグだ。

 そして、最後にローカルコンピュータ上では、MhtRedirLaunchInetExeを利用して、PCに実行したいEXEファイルをダウンロードし、実行させる。このMhtRedirLaunchInetExeとは、ローカルゾーンにあるHTMLファイル中で以下のように記述するとファイルを外部から読み込み警告なしに実行するというバグだ。

 以上の組み合わせで受動攻撃が成立してしまうのだ。

 今回投稿された方法は、セキュリティ修正パッチがリリース済みの既知の脆弱性を使う必要がない。つまり、これらの脆弱性はどれ1つとして、感染を防ぐための有効なパッチがない、というのが現状なのだ。

 Liu Die Yu氏の投稿には、これらのバグを検証するためのサンプルスクリプトも掲載されており、Nimda、CoderedやRedlofなどの受動攻撃ウイルスで使われる「ページを表示しただけでウイルスプログラムをコンピュータが取り込んで実行してしまう」個所は、そのまま使えるスクリプトが存在していることになる。あとは、コンピュータに取り込まれた後で、さらにコンピュータ内のHTMLファイルに感染する、あるいはメールといった他の経路にも感染する部分を作ればウイルスとしての基本的な機能は完成してしまうわけだ。



予想される新ウイルスを予防する

 セキュリティ上の重要度から言っても、おそらく今月のセキュリティ修正パッチリリースにはこのセキュリティホールに対するものが含まれるものと思われるが、それまでは、Webを利用しているWindowsユーザーなら誰もが、危険なウイルスに感染する危険性を持っていることになる。

 根本的な解決法は、もちろん、セキュリティホールを塞ぐためのパッチがマイクロソフトからリリースされ、それをOSに適用することだ。マイクロソフトによるこの問題への対策が発表されるまでは、感染スクリプトを自分のPC上で起動させないように工夫するしかないだろう。

 たとえば、RedlofやNimdaの例を見てもそうだが、Webを使った受動攻撃の場合、Webコンテンツを作るHTMLそのものでなく、JavaスクリプトやActiveXなどで攻撃プログラムを構成してPC上で実行させて感染動作を行なわせている。

 このため、ウイルス感染を防ぐためには、Internet Exlorerの設定で、ActiveXやアクティブスクリプトを無効にする、というような方法が考えられるだろう。感染スクリプトが閲覧スクリプトに含まれていたとしても、スクリプトが実行されることはないからだ。

 また、ウイルスではなくても、たとえば怪しげなWebサイトなどでは、この仕組みを利用して閲覧者に不正なプログラムを仕掛けるような輩が出てくるかもしれない。

 ただし、管理者が信用が置けるとわかっているサイトでは、スクリプト実行を許可するというような方法もあるだろう。Internet Explorerの場合は、信頼の置ける「信頼済みサイト」、怪しいと思える「制限つきサイト」といったゾーン分けの設定ができる。セキュリティ設定は、このゾーンごとに違う設定にできるので、たとえば、一般のサイトではJavaスクリプトは実行しない、信頼済みサイトでは実行OKとする、などといった使い分けが可能だ。

 たとえば、「信頼済みサイト」に信頼が置けると思えるサイトで、Javaスクリプトが必須のサイトのアドレスを羅列しておくと、これらのサイトに関しては、信頼済みサイト用のセキュリティ設定を適用させる、というような設定ができる。

 ただし、この「信頼できるサイト」の基準作りが難しいという点で、この方法は万能ではないことに注意してほしい。Nimdaウイルスの場合では、メジャーなポータルサイトがウイルス感染したために、流行がさらに広がったというような背景もある。「企業だから安心」といったライン分けは目安にはなるものの、絶対というわけではないのだ。

感染予防としては、Web閲覧時のスクリプトの実行を止めてしまうのも1つの手だ。Internet Explorerでは、スクリプトが必要で、まず感染しないだろうと思えるサイトは「信頼済みサイト」として登録して、そのサイトだけスクリプト実行をさせるという設定ができる

(2004/01/09)

大和 哲
1968年生まれ東京都出身。88年8月、Oh!X(日本ソフトバンク)にて「我ら電脳遊戯民」を執筆。以来、パソコン誌にて初歩のプログラミング、HTML、CGI、インターネットプロトコルなどの解説記事、インターネット関連のQ&A、ゲーム分析記事などを書く。兼業テクニカルライター。ホームページはこちら
(イラスト : 高橋哲史)

- ページの先頭へ-

Internet Watch ホームページ
Copyright (c) 2004 impress corporation All rights reserved.