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