ActiveXコントロールやJavaアプレット,およびこれらを利用するシステムにいくつものセキュリティ・ホールが指摘されている。先例の原因を知り,同様な問題を回避しよう。利便性との相反や,運用面での考慮が必要な場合もある。システムの発注者も危険の可能性を認識しておきたい。

図1●ActiveXコントロール「Office Web Components」に発見されたセキュリティ・ホール
Office Web Componentsは,Microsoft OfficeがなくてもOfficeのファイルを閲覧できるようにするActiveXコントロール。2002年8月22日に公表されたセキュリティ・ホールは,ユーザーが悪意のあるWWWページを訪問したり,HTMLメールを閲覧したりしただけで,コマンドを実行され,ウイルスに感染させられたり,パソコン上のローカル・ファイルを読み出されたり破壊されたりする恐れがある。発見したイスラエルGreyMagic Softwareが,セキュリティ・ホールを実証するデモを公開している
表1●ActiveXコントロール,Javaアプレットの開発が原因でセキュリティ上の問題を作ってしまった例

 2002年8月22日,Microsoft Office 2000/XPなどに含まれるActiveXコントロール*「Office Web Components(OWC)」に,危険度「高」のセキュリティ・ホールがあることが公表された(図1[拡大表示])。OWCは,Microsoft OfficeがなくてもOfficeのファイルを閲覧できるようにするためのActiveXコントロールである。今回公表されたセキュリティ・ホールは,HTMLに埋め込まれたスクリプトからOWCを呼び出して,ある方法でパソコンのOSコマンドを実行したり,ファイルを読み書きできてしまったりするというものだ。

 Microsoftのソフトウエアにセキュリティ・ホールが報告されることは珍しくない。しかし,ActiveXコントロールがWWWブラウザやOSと異なるのは,ユーザーが個別システムのためにVisual Basicなどで開発できるモジュールであるという点だ。すなわち,ユーザーが同様なセキュリティ・ホールを作ってしまう可能性がある。

 ActiveXコントロールに関するセキュリティ上の問題は,これまでにも多数指摘されている(表1[拡大表示])。これらの実例から,同様な問題を作らないための教訓を学んでおきたい。

 個別のシステムのために作成したActiveXコントロールが狙われる可能性は低いと思われるかもしれない。確かに無差別な攻撃であれば,OSやWWWブラウザのセキュリティ・ホールを狙う方が的中率は高い。しかし,問題のあるActiveXコントロールを配布したサイトの掲示板などに攻撃コードまたは攻撃コードへのリンクを書き込めば,問題のActiveXコントロールをインストールしたユーザーを狙い撃ちすることもできる。可能性がないとは言い切れない。指摘されているセキュリティ上の問題は,意識さえあれば防げるものも多い。開発者はその可能性について知っておこう。

 同様に,Javaアプレット*も注意を怠るとセキュリティ・ホールを作ってしまう場合がある。実際にいくつかセキュリティ上の問題が指摘されている。

ActiveXからOSコマンド実行

 OWCの問題は,スクリプトから呼び出せるhost()などのメソッドが,ある方法によりOSのコマンドを実行できるなど,危険な動作が可能になっていたことにあった。

 2002年1月24日に報告されたCyberSupportの問題も,同様に自由度が高すぎるためにセキュリティ・ホールとなってしまった例である。CyberSupportのActiveXコントロールは,ローカルのプログラムを起動する機能を持っていたが,JavaScriptからファイル名やパラメータを指定することができたため,cmd.exeなどを起動して任意のコマンドを実行できた。

 スクリプトから呼び出せるActiveXコントロールは,セキュリティ・ホールの発見も容易なケースがある。CyberSupportの問題を発見した独立行政法人 産業技術総合研究所 グリッド研究センター セキュアプログラミングチーム 研究チーム長の高木浩光氏は「コントロールを呼び出しているスクリプトの中にファイル名が記述されており,そのファイル名などを変えてみることでセキュリティ・ホールの存在が判明した」と報告している。

 バッファ・オーバーフロー攻撃*に対するぜい弱性は,多数のソフトウエアに報告されているが,ActiveXコントロールにも存在し得る。実際にFlashをはじめ多数のActiveXコントロールに報告されている。

 ActiveXコントロールの危険性に対する意識が薄い開発者もいる。ActiveXコントロールを実行させるために,ユーザーにWWWブラウザのセキュリティ・レベルを緩くするように設定させていたサイトもある。そのような指示に従うと,悪意のあるWWWページを訪問するだけで,任意のActiveXコントロールを確認なしに強制的に実行されてしまう。

Javaアプレットでファイル更新

 Javaアプレットの場合,通常ローカルのファイルにはアクセスできないので,ActiveXコントロールに比べ安全性は高い。しかし,ローカルにインストールされ,CLASSPATH*が設定されているものは,ローカル・ファイルの読み書きができる。その場合,スクリプトからの操作を限定しなければ,パソコンのデータの破壊などが可能になる恐れがある。

 また,総務省,経済産業省,国土交通省の電子申請システムには,セキュリティ・ホールが発見されたJava Plug-in*を配布し続けていたことが指摘されている。