Web サーバーへの攻撃は後を絶たない。あえて「Code Red」ワームなどの例を挙げなくても,十分ご存知であろう。しかし,クライアントであるWeb ブラウザが狙われるケースも少なくない。すべてのパソコンに搭載されているだけに,対策を徹底するのが難しいという点もやっかいだ。
顕著な例が,8月18日から発生したセキュリティ・インシデントである。あるオークション・サイトに悪意があるスクリプトが埋め込まれ,そのページを閲覧しただけで Windows OS が正常に動作しなくなるというものだった。この攻撃は「受動的攻撃」と呼ばれるものの1つである。今回のコラムでは,この受動的攻撃について解説するとともに,Webブラウザのセキュリティを確保することの重要性について説明したい。
「ワーム」,「ウイルス」,「受動的攻撃」
上述のセキュリティ・インシデントは,「ウイルスによるもの」と解説されているケースもよく見かける。ウイルスと受動的攻撃の違いをはっきりさせておくべきだろう。その前に,まずワームとウイルスの違いについて考えよう。
前回のコラムでお話した「Morris Worm」に関する資料の1つである「(RFC 1135)The Helminthiasis of the Internet」(IPAの宮川寧夫氏による邦訳文)には,以下のような文章がある。
「『ワーム』は,独立して動くことができ,今いるホスト(宿主)の資源を自らを保守するために消費し,完全に機能する自らの複製を他のマシン上に広めることができるプログラムです」
「『ウイルス』は,自身を広めるために,ホスト(宿主)プログラムに自らを入れ込む小さなコードです。これは独立して動くことはできません。活動させるためには,そのホスト・プログラムが実行されることを要求します」
以上が, 同資料による,ワームとウイルスの定義である。とはいえ,作成されたのが1989年であり,ウイルスがフロッピー・ディスクによってのみ広がっていた頃のもので,現状にはそぐわないという面もある。
現在のウイルスで考えてみよう。例えば, 1999 年に大流行したウイルス「Happy99」は,電子メールに添付された「happy99.exe」プログラムをダブル・クリックしなければ感染しない。ホスト・プログラムを実行しなければ感染しない,という点では 上記の RFC 1135 で定義するウイルスに該当する。しかし Happy99 を実行してしまうと,Happy99は Windows のシステム資源を一部分改ざんし,同時に電子メールまたはニュース・グループへの投稿により自身のコピーを送信して感染を広める。これは明らかにワームの挙動に一致する。
このように,現在では「ウイルス」と一口に言っても,非常に幅広い挙動を示すようになっている。そのため,ウイルスとワームを明確に区別することが難しくなっており,悪意があるプログラム(スクリプト)すべてを「ウイルス」と呼ぶケースが増えている。ごく最近の事例では,Code Red ワームを「ウイルス」と伝える報道機関もあった。Code Red はユーザーがホスト・プログラムを実行しなくても感染を広げるので,RFC 1135に照らせば明らかにウイルスではない。しかし,近年の状況を考えれば間違いとは言い切れないのである。
そのため,これらのワームやウイルスをすべて「広義のウイルス」とするのが適切と考えられる *1 。そして,RFC 1135で述べているような,ホスト・プログラムを実行しなければならないというのは「狭義のウイルス」と呼べるだろう。
そして,冒頭で紹介した受動的攻撃は,「広義のウイルス」ではあるが「狭義のウイルス」には該当しない。*1例えば IPA ではウイルスを,第三者のプログラムやデータベースに対して意図的に何らかの被害を及ぼすように作られたプログラムであり,次の機能を1つ以上持つものと定義している。
- 自己伝染機能:自らの機能によって他のプログラムに自らをコピーし,またはシステム機能利用して自らを他のシステムにコピーすることにより,他のシステムに伝染する機能
- 潜伏機能:発病するための特定時刻,一定時間,処理回数等の条件を記憶させて,発病するまで症状を出さない機能
- 発病機能:プログラム,データ等のファイルの破壊を行ったり,設計者の意図しない動作をする等の機能
受動的攻撃とは
通常の不正アクセスは,攻撃をする側が能動的に攻撃対象のセキュリティ・ホールなどを突く。それに対して,受動的攻撃とは,攻撃を受ける側の行動を引き金として行う。その名の通り“受動的な”攻撃なのである。オークション・サイトの例では,「Webブラウザでページを閲覧する」という行動が引き金となった。
加えて,ウィルス同様“無差別”であることも特徴である。特定のユーザーを狙うわけではない。例えば,Webページを閲覧したすべてのユーザーが攻撃対象となるのだ。
各アンチウイルス・ベンダーは,オークション・サイトで悪用されたスクリプトをウイルスと分類している。例えば,シマンテックでは「Trojan.JS.Offensive」ウイルスと命名している。しかし,ユーザーにウイルス(スクリプト)自身の実行を求めない点で,狭義のウイルスとは異なる。「Web ブラウザで特定のページを見る」という,プログラムの実行には一見関係ない行為が引き金で,悪意のあるプログラムが実行されてしまうのである。
受動的攻撃は,クライアント側のソフトウエアがぜい弱であるために成立する。オークション・サイトの例では,Georgi Guninski 氏の発見した Microsoft Virtual Machine の問題が悪用された。Java VM のぜい弱性により,Microsoft Internet Explorer を通じた受動的攻撃が成立してしまった *2。
*2:この問題に関しては,以下の情報も参照されたい。
- SecurityFocus.com, "Microsoft Virtual Machine com.ms.activeX.ActiveXComponent Arbitrary Program Execution Vulnerability"
- Georgi Guninski, "IE 5.5/Outlook security vulnerability - com.ms.activeX.ActiveXComponent allows executing arbitrary programs"
- Marcin Jackowski, "javascript can write anything to windows98 registry"
なお,受動的攻撃についてより知りたい読者には,「penetration technique research site」にある「受動的攻撃検証サイト」や「受動的攻撃について(PDFファイル)」 が参考になる。
クライアントを狙うのは,狭義のウイルスだけではない。十分注意しよう。
新井悠 (ARAI Yuu)
株式会社ラック コンピュータセキュリティ研究所
y.arai@lac.co.jp
IT Proセキュリティ・サイトが提供する「今週のSecurity Check [一般編]」は,その週に起きたUNIX関連およびセキュリティ全般のニュースや動向をまとめた週刊コラムです。セキュリティ・ベンダーである「株式会社ラック」のスタッフの方を執筆陣に迎え,専門家の立場から解説していただきます。