OSは、インターネットゾーンからダウンロードしたファイルを保存するとき、ZoneIdというセキュリティ情報を付加する。したファイルを実行しようとすると、実行してもよいかどうかをユーザーに問い合わせる。不正なプログラムを実行してしまう危険性を抑えるための仕組みだ。そのZoneIdの詳細を解説。Explorer(IE)では、セキュリティ対策の一環として、新たに「ZoneId(ゾーンID)」と呼ばれる仕組みが導入された。Expressで保存したメールの添付ファイルに対して、ZoneIdと呼ばれる一種の「目印(マーカー)」を付けておき、エクスプローラなどでダブルクリックして実行しようとすると、本当に実行してもよいかどうかがユーザーに対して問い合わせられる機能である。ユーザーが許可した場合にのみプログラムの実行が行われる。従来は、いったんローカルにダウンロードすれば何の制約もなくファイルを実行することができたが、ZoneIdにより、インターネットゾーンから取得したファイルに対しては、ある程度の制約を課すことができるようになった。(KB873374)」からダウンロードしたツール)をローカルのNTFSディスク上に保存し、それをエクスプローラ上でダブルクリックして実行しようとしたところである。GDI+の脆弱性検出ツールのダウンロードファイルを実行しようとしたところマイクロソフト社のサイトからダウンロードしたGDI+の脆弱性検出ツールのダウンロードファイルをローカルのNTFSディスク上に保存し、それをエクスプローラ上でダブルクリックしたところ。実行されずに、このような警告ダイアログが表示される。(1)ダウンロードしたファイル。C:\Downloadというフォルダに保存している。(2)ファイルをダブルクリックして実行しようとすると、このような警告ダイアログが表示される。(3)ファイルの内容に関する情報。ファイルに適切な署名が付けられていると、このような情報(ファイル名や発行元、ファイルの種類)が表示され、ファイルが信頼できるかどうかを判断する材料となる。これはZoneIdとは特に関係はない。(4)ファイルが格納されている場所。このようにローカルのフォルダに保存されているファイルであっても、インターネットゾーンからダウンロードされたファイルならば、警告ダイアログが表示される。(5)これをクリックしないと実行されない。(6)信頼できない(と思われる)ファイルの場合は、こちらを選択して実行をキャンセルする。(7)このファイルタイプ(ここでは.exe)に対する警告ダイアログの表示を、今後抑制するためには、これをオフにする。通常の実行ファイルならばすぐに実行されるのだが、インターネットゾーンからダウンロードしたファイルであれば、このようにローカルのディスク上に保存されている場合でも、警告ダイアログが表示される。これは、IE上でダウンロードして直接実行しようとした場合の挙動と同じである。実行するのではなく、一度ユーザーに警告して判断を仰ぐことにより、いくらかでも(不正なファイルの実行による)危険性を軽減することができる。実行ファイルだけでなく、アプリケーションによっては、このようなファイルに対していちいち警告メッセージを表示したり、実行の許可を求めたりする場合がある。2003でソリューションファイルを開こうとしているところである。インターネットからダウンロードしたファイルの場合は、このように確認のためのダイアログが表示される。2003でオープンがブロックされたところインターネットゾーンからダウンロードしたファイルを開こうとすると、このような確認ダイアログが表示される。ないファイルの場合は表示されない。(1)セキュリティ的な問題が発生する可能性のあることを警告するダイアログ。(2)これをクリックしないと、開くことはできない。SP2のIEと、NTFSの「ストリーム」の両方の機能を使うことによって実現されている。ストリームとは、ファイルの中に格納されているデータの列(流れ)のことである。一般にファイルといえば、単なるバイトデータの集まり(連なり)として扱われているが、NTFSを始めとして、ストリームをサポートしたファイルシステムでは、1つのファイルの中に複数のストリームを格納することができる。ストリームを利用すれば、メインとなるデータストリームのほかに、補助的な情報を格納したり、複数のバージョンのファイルデータを同時に格納したりすることができる。ストリームを指定しなければ、メインとなる(無名の)ストリームにしかアクセスできない。ストリームを理解しない従来のアプリケーションからは、メインのストリームのみが見える。SP2のIEでは、ダウンロードしたファイルに対して「Zone.Identifier」という名前のストリームを付加し、インターネットゾーンからダウンロードしたことを表す属性データを記録している。実際にこの内容を確認するには、次のようにすればよい。......「3」はインターネットゾーンを表していると考えられるストリームデータへアクセスするには「ファイル名:ストリーム名」という書式を利用する。この例では、「gdidettool.exe」がダウンロードしたファイル名で、その後ろに付けた「:Zone.Identifier」がストリーム名の指定である(ストリーム名では大文字/小文字は関係ない)。gdidettool.exe:Zone.Identifier」とすればメモ帳で内容を確認したり、書き換えたりすることができる。この例で分かるように、Zone.Identifierストリームにはテキスト形式でゾーン情報が記録されている。ここでは「ZoneId=3」となっているので、3はインターネットゾーンを表していると考えられるが、実際には3以外の値は記録されることはないようである(ほかのゾーンからのダウンロードの場合は、このストリーム自体が存在しない)。このようなファイルをエクスプローラでアクセスし、そのプロパティを表示させると次のようになっている。ZoneId情報を持つファイルのプロパティインターネットゾーンからダウンロードしたファイルのプロパティには、このようにセキュリティ情報が表示される。(1)ZoneId情報を持つファイルでは、このようなセキュリティ情報が表示される。ないファイルの場合は、ここには何も表示されない。(2)これをクリックするとZoneId情報が削除され、ほかのローカルファイルと同じように利用できるようになる。下に表示されている[セキュリティ:]の部分が、インターネットゾーンからダウンロードされたファイルであることを表している。それ以外のファイルでは、このようなセキュリティ情報は表示されない。Zone.Identifierストリームが存在していて、さらにZoneId=3となっていれば、このようなセキュリティ情報が表示される。実際には、3ではなく、1〜4のいずれであってもこのセキュリティ情報が表示されるが、ダブルクリックによる実行のブロック(警告ダイアログの表示)は、ZoneId=3の場合だけに限られるようである。上のダイアログには[ブロックの解除]というボタンがあるが、これをクリックすると、ZoneId情報(正確にはZone.Identifierストリーム)が削除され、ZoneId情報を持たないほかのファイルと同様に扱われるようになる。Studio.NETでも警告なしでファイルを開くことができるようになる。安全であることが分かっているファイルの場合は、手動でZoneId情報を削除し(ブロックを解除し)、煩わしい警告ダイアログが表示されないようにするとよいだろう。以上のように、ZoneIdの仕組みは実際にはNTFSのストリーム機能に大きく依存している。SP2のIEでは、インターネットゾーンからファイルをダウンロードした場合、ファイルの内容を書き込むだけでなく、ZoneIdを表すストリーム情報も同時に書き込んでいるのである。そのため、ダウンロードしたファイルから何らかの理由でZoneIdのストリーム情報が欠落してしまうと、この機能は働かなくなる。実際にはこのような欠落は、頻繁に起こる可能性がある。NTFS以外のファイルシステム(FAT16やFAT32など)へファイルをダウンロードしたり、NTFSから非NTFSファイルシステムへファイルをコピーした場合である。FATファイルシステムはストリーム機能をサポートしていないので、このようなファイルシステムへファイルをダウンロードしたり、コピーしたりするとZoneId情報を付けることはできない。いう操作を行うと、ZoneId情報が欠落して、通常のファイルと同じように扱われる。ネットワーク上の共有フォルダを利用する場合は、それがNTFSファイルシステムならば正しくZoneId情報は保存されるが、そうでなければ(FATファイルシステムを公開していて、そこへコピーしたりすると)やはりZoneId情報は欠落する。ストリームをサポートしていないプログラムを利用する場合にも、ZoneId情報の欠落が生じる可能性がある。エクスプローラやコマンドプロンプト上のcopyコマンド、標準のバックアップツールなどはストリームをサポートしているため、これらでファイルをコピーやバックアップしてもZoneId情報は正しく維持される。9xしかサポートしていないプログラムなどでファイルをコピーすると、ストリーム情報がコピーされず、ZoneId情報が欠落する可能性がある。エクスプローラを使う場合でも、.ZIPファイル(圧縮ファイル)を扱う場合には注意が必要である。SP2では次の2通りの方法があるが、方法1ではZoneId情報が欠落するので注意が必要である。■方法1—ダブルクリックによる解凍エクスプローラで.ZIPファイルの内容を解凍する第1の方法は、単にエクスプローラで.ZIPファイルをダブルクリックしてその内容(ファイルやフォルダ)を一覧表示させ、ドラッグ&ドロップでほかの場所へコピーすることである。この方法は簡便ではあるが、ZoneId情報はコピーされない(欠落する)ので、注意が必要である。■方法2—展開ウィザードによる解凍もう1つの方法は、エクスプローラ上で.ZIPファイルを選択し、[ファイル]メニューの[すべて展開]を選ぶか、右クリックしてポップアップメニューから[すべて展開]を選択する方法である。このメニューを選ぶと、.ZIPファイルの[展開ウィザード]が起動され、展開先を指定するとファイルが展開される。この方法では、手間はかかるが、展開された各ファイルには正しく元の.ZIPファイルと同じZoneId情報が付けられる。展開ウィザードを使った.ZIPファイルの展開.ZIPファイルに付けられたZoneId情報を維持したまま、ファイルを解凍するには、ウィザードを使う必要がある。(1)展開する.ZIPファイルを右クリックする。(2)ポップアップメニューから[すべて展開]を選択して展開ウィザードを起動すると、展開された各ファイルにもZoneIdが付けられる。以上の例で分かるように、ZoneId情報の欠落は頻繁に起こる可能性がある。SP2は安全だと考えるのではなく、あくまでも、(少しばかり)安全性を高めるための1つの機能にすぎないことを認識しておく必要がある。確認ダイアログが表示されても、よく考えずに[OK]をクリックしてしまっては意味がないので注意していただきたい。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。