本文中で述べた脅威は,そもそもInternet Explorer(IE)がローカルのActiveXコンポーネントを呼び出し,その機能を利用できることが原因となっている。
ActiveXはインターネットに関連する技術の総称だったが,現在ではCOM(Common Object Model)を使って構築された技術をActiveXと呼び,ほぼCOMと同義のように使われている。ActiveXコンポーネントとは機能単位にまとまったプログラムの部品である。プログラマはこれらコンポーネントを呼び出すことで,OSの機能を簡単に利用できる。レジストリを書き換える場合を例にすると,「レジストリのこの部分のこのキーの値を『A』という値にする」ということをActiveXコンポーネントに依頼するだけである。
WindowsはActiveXコンポーネントの塊である。例えば,本文中で述べたスクリプト実行環境WSH(Windows Scripting Host)やファイル操作用のFile System Object(FSO)以外に,データベース・アクセス用のADO(ActiveX Data Objects),ディレクトリ・アクセス用のADSI(Active Directory Service Interfaces)などのActiveXコンポーネントも標準で備えている。また,Officeや一太郎などのアプリケーションもActiveXコンポーネントを備える(図B-1[拡大表示] )。
これらのActiveXコンポーネントは,IEからスクリプト言語で記述された内容に沿って呼び出される。IEは標準でVBScript,JScript(JavaScriptのMicrosoft版)の二つのスクリプト・インタプリタを持っている。どちらの言語で解釈するかはタグの中にある「<SCRIPT LANGUAGE="○○">」の○○部分で決まる。スクリプト内でActiveXコンポーネントを使うように宣言した場合には,IEがそのコンポーネントを呼び出して処理を依頼する。
また,IEはダウンロードしてきたActiveXコンポーネントを呼び出して処理を依頼することもできる。具体的には「C:\Windows\Downloaded Program Files」(Windows 95/98/Meの場合)または「C:\Winnt\Downloaded Program Files」(Windows NT/2000/XPの場合)フォルダにダウンロードしたコンポーネントを呼び出せる(図B-2[拡大表示])。
ActiveXコンポーネントはEXEファイルなどと同様にマシン上で直接実行されるバイナリである。EXEファイルと同様の操作がOSに対して可能である。つまり,ダウンロードしてきたActiveXが悪意あるプログラムだった場合,バックドアを開けることも,OSの各種設定を変更することも簡単に行える。これが不用意にダウンロードしたActiveXコンポーネントが危ないと言われる理由である。
認証はローカルとダウンロードで異なる
ActiveXコンポーネントは使われ方次第で危険なものだ。ただ,IEは無条件にActiveXを呼び出し,その機能を利用しているわけではない。適切なセキュリティ設定がされていれば,不正なActiveXを呼び出さないような仕組みを用意している。この仕組みはローカルにインストールされているActiveXコンポーネントとダウンロードしてきたActiveXコンポーネントで異なる(図B-3[拡大表示])。
ローカルにインストールされている場合は,ActiveXコンポーネントを起動する前にレジストリ値を参照して,ActiveXコンポーネントを起動してよいかを決定する。IEでは,このレジストリ値のことを「安全マーク」と呼んでいる。
図B-4[拡大表示]がその具体例だ。この画面はレジストリ・エディタで「Tabular Data Control」と呼ばれるデータ整形用のActiveXコンポーネントのパラメータが書かれた部分を表示させたものである。「HKEY_CLASSES_ROOT\CLSID」に並んだActiveXコンポーネントごとのレジストリの中にある「Implemented Categories」に「7DD95801-9882-11CF-9FA9-00AA006C42C4」(Safe For Scripting)と「7DD95802-9882-11CF-9FA9-00AA006C42C4」(Safe For Initializing)というキーがあれば,IEは「安全マーク付き」と判断する。もし,このキーがなければ,安全ではないと判断する。
|
|
ただし,本特集の後半で説明するIEのセキュリティ設定で「スクリプトを実行しても安全だとマークされていないActiveXコントロールの初期化とスクリプトの実行」が許可されている場合はこの認証機構はスキップしてしまう。
一方,ダウンロードしたActiveXコンポーネントの場合は,ActiveXコンポーネントがディジタル証明書を持っているかどうかで認証する。ディジタル証明書を持っている場合は,ActiveXコンポーネントが改ざんされていないかを検証し,問題がなければ実行する。
証明書の発行は,米Verisign社などの証明書発行機関に依頼する。この際,会社の登記情報など身元を提出/証明する必要がある。犯罪者は一般に自分の身元を知られたくない。このため,悪意ある証明書付きのActiveXコンポーネントは作りにくい。ただし,認証機関はプログラムの善悪は判断しないため,危険なプログラムでないという保証はない。
IEのセキュリティ設定で「未署名のActiveXのダウンロード」を許可していると,証明書なしのActiveXコンポーネントをチェックせずに実行してしまう。