| 本文書は、Windows NT World誌に寄稿した記事の原稿を、IDGジャパン編集部殿の許可を得た上で掲載したものです。 |
本連載の前回記事でIE5.0のScriptlet.TypeLib問題を取り上げ、HTML形式の電子メールやニュース記事による攻撃の危険性について触れたが、実際にこの問題を利用した電子メールベースのワーム(自己増殖型の不正プログラム)が出現した。![]() 図1 BubbleBoyワームを警告するIPAのWebページ 「BubbleBoy」という名のこのワームはHTML形式の電子メールに埋め込まれており、このメールをOutlookやOutlookExpressで開いた際にScriptlet.TypeLib問題を利用してスタートアップフォルダにHTMLアプリケーションファイル(UPDATE.HTA)が作成される。その後のWindows再起動時にこのUPDATE.HTAが自動実行されることで、様々な不正行為(レジストリ変更、他のメールアドレスへのBubbleBoy送信等)が行なわれる。 BubbleBoyの詳細についてはここでは触れないが、この機会にHTLM形式メールやニュース記事の危険性について再認識していただきたい。ちなみにBubbleBoyは英語版およびスペイン語版のWindows9xをターゲットとしてコーディングされているため、日本語版Windows9xやWindowsNTでは動作しない。しかし日本語版Windows環境向けの亜種を作成することは容易であるので警戒が必要だ。前月号の記事をご参考の上、適切な対策を施すことをお勧めする。 なお、各Outlook製品がメールやニュース記事の中の動的コンテンツをどのタイミングで実行するかについて、NTBugtraqのRuss Cooper氏がWebページにまとめているので参照されたい。 |
さて今回は、マイクロソフトのOffice製品に関するセキュリティ問題について解説する。以下は、本原稿執筆時点で筆者が把握しているOffice97(SR-1)以降の製品に関するセキュリティ問題一覧である。
表1 マイクロソフトOffice製品のセキュリティ問題一覧 (注: Office97 SR-1以降、本原稿執筆時点) 表1 では各セキュリティ問題をその脅威の種別によって大きく三つに分類している。
「プログラム起動」の種別に分類される「Excel97 CALL問題」および「Office ODBCドライバ問題」を悪用すると、ドキュメントを開いた際に任意のプログラムが起動してしまうようなExcelワークシートをマクロを使用せずに作成することが可能となる。これらの不正ワークシートは基本的にExcelのマクロ警告機能やウィルススキャナソフトによるウィルスチェックで検出されないため、非常に危険度が高いと考えられる。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Excel97 CALL問題は、Excelの関数の一つである「CALL関数」を使用することにより、Excelワークシートを開いた際にローカルマシン上で任意のプログラムを実行させることができてしまうものである。 ExcelやWordには、ドキュメントを開く際にマクロが存在するかどうかをチェックしてユーザに警告する「マクロ警告機能」が装備されており、デフォルトでそれらは「有効」になっている。そのため、ユーザには開こうとしているドキュメント中にマクロがあるかどうかを知り、必要に応じてマクロを無効にするもしくはそのドキュメントを開かないといった判断をするチャンスが与えられている。この機能は、ドキュメント中のマクロが不正な振る舞いをするかどうかを検査するわけではないものの、ユーザが不用意にドキュメントを開いて不正なマクロが実行してしまうことを避けるための、一つの手助けとして重要な意味を持っている。 ExcelのCALL関数はユーザのマシン上で任意のプログラムを起動させることが潜在的に可能であるにも関わらず、CALL関数自体は単なるワークシート関数でありマクロではないため、Excelのマクロ警告機能によってワークシートを開く際に警告が出ることはない。ユーザは、CALL関数を利用した不正なワークシートを電子メール等で受け取った場合、その中の不正コードの存在を事前に知るすべがないのである。 そもそもCALL関数はDLLまたはコードリソースに含まれるプロシジャを呼び出し、その結果をワークシートに取り込む機能を持つ。例えば、 を実行することで、Kernel32.dllのGetTickCountプロシジャを呼び出し、システム起動時からの実経過時間(ミリ秒)を取得することができる。 ![]() 図2 CALL関数の使用例。Kernel32.dllのGetTickCountプロシジャを呼び出す。 この機能を利用すれば、Kernel32.dll(あるいは他のDLL)の中にあるプログラム起動プロシジャを呼び出して任意のプログラムを起動することができてしまう。 マイクロソフトはこのExcel CALL問題に関するセキュリティ情報を提供するとともに、修正モジュールを作成、配布している。修正モジュールを適用することにより、Excel97のワークシート上からCALL関数を使用することができなくなる(マクロからは引き続き使用可能)。 |
|
Office ODBCドライバ問題は、当初「Excel97 ODBCドライバ問題」と呼ばれていたものである。マイクロソフトが提供しているこの問題のFAQ によると、この問題はODBCとは直接関係があるわけではない。が、もともと報告された際に使用した名称をそのまま継続して使用し、この問題の総称を「Office ODBCドライバ問題」と呼んでいる。 この問題はMicrosoft Jetデータベースエンジンに存在する脆弱性に起因するため、Jetデータベースエンジンを利用するすべてのアプリケーションプログラムに影響する。Jetとはデータベースに対してデータの操作を行なうための基本機能がパッケージ化されたデータベースエンジンで、Excel、Access等のOffice製品以外にも多くのサードパーティ製品で利用されている。今回明らかになったのは、Jetに含まれる次の二つの問題点である。
|
前述の通り、ExcelやWordといったOffice製品には、ドキュメントを開く際にマクロが存在した場合、ユーザに警告する「マクロ警告機能」が備わっている。![]() 図4 Word97のマクロ警告ダイアログ。 これによりユーザはドキュメント中のマクロの存在をオープン時に知ることができるのだが、このマクロ警告機能が正常に機能しない(ドキュメント中にマクロがあっても警告されない)各種の問題が報告されている。
|
その他、Office製品に関するセキュリティ問題として以下があげられる。
以上、今回はマイクロソフトOffice製品に関するセキュリティ問題について解説した。組織内のPC上でOffice製品が使用されているケースは非常に多いと予想されるが、確実にセキュリティ修正モジュールを適用しないと思わぬセキュリティ侵害を被る危険性が大きい。ぜひこの機会に各PC上のOffice製品についてチェックすることをお勧めする。 |
1999年11月執筆
セントラル・コンピュータ・サービス株式会社
塩月 誠人