Windows XP Service Pack 2(SP2)を適用した後,PC上のプログラムを起動すると,セキュリティ警告メッセージが表示されるようになりました。すべてのプログラムではありません。どんな条件のときに,どのような仕組みでこの警告が出るのでしょうか?
しかし,XP SP2で警告が表示されるのは,起動しようとしたファイルをインターネット上のWebサイトなどから入手した場合だけです。「ファイルはインターネットからダウンロードされたものである」という情報は巧妙な仕組みで記録しています。
警告が出るには2つの条件が必要 ここで応用されているNTFSの機能は,「複数ストリーム」と呼ばれています。実はNTFSは複数の単位のデータを1つのファイルとして保存できます。この情報の単位がストリームです。あまり知られていませんが,複数ストリームはWindows NT 3.1のころからNTFSに備わっています。詳細は,マイクロソフトのWebページ「プログラマから見たNTFS 2000 Part1: ストリームとハードリンク」をご参照ください。 ただし,ユーザーは通常,メイン・ストリームという部分のみをファイル・データとして利用可能で,その他のサブストリームの情報は意識できません。一般的なプログラムは,複数ストリーム・ファイルのうち,メイン・ストリームのみを扱うためです。ストリームは,NTFS固有の機能で,FATなどほかのファイル・システムとの互換性がないため,これまであまり目立って使用されることはありませんでした。
サブストリームにゾーンを記録 マイクロソフトが提供するツールは,先に紹介したページの原文「A Programmer's Perspective on NTFS 2000 Part 1: Stream and Hard Link」にあります。利用手順は以下の通りです。
(1)上記Webサイトから,「NTFSext.exe」をダウンロードします。
例えば,警告が表示される実行ファイルには,Zone.Identifierという名前のストリームが作成されており,その中にダウンロード元のWebサイトの情報が数字で設定されています。 数字は,IEのインターネット・オプションなどで見えるセキュリティ・ゾーンと対応しており,「0」が「マイコンピュータ」を,「1」が「イントラネット」を,「2」が「信頼済みサイト」を,「3」が「インターネット」,「4」が「制限付きサイト」を示しています。
例えば,実行ファイルのプロパティ・ウインドウの[全般]タブの[ブロックの解除]ボタンを押すという操作で警告が出なくなります(図3)。また,「いったんUSBメモリーなどFATでフォーマットされた記憶媒体に実行ファイルをコピーする」「実行ファイルのプロパティ・ウインドウの[Streams]タブからゾーン・データを削除する」などの方法も有効です。
ゾーン情報の認識に時間が必要
(1)図6のプロパティ・ウインドウで[Edit Streams…]ボタンを押します。 既に,ストリームの内容が存在する場合には(2)の操作の後,内容が表示されます。警告が表示される実行ファイルでは, [ZoneTransfer] ZoneId=3 と表示されるはずです。この「3」の部分だけを注意深く,半角の「4」に置き換えます。「注意深く」と書いたのは,編集場所を的確に選ぶ必要があるためです。本来,このストリームの内容は改行文字を含む複数行から成りますが,マイクロソフトのツールでは,改行文字を表示・入力できません。このため,表示されない改行文字を残すように編集します。 編集が終わったら,入力ダイアログを閉じます。続けてストリームを開こうとしてファイル名入力ダイアログが表示されますので,これを[キャンセル]ボタンで閉じます。
この後,このゾーンIDを「4」に設定したファイルを実行してみると,比較的危険性が高い「制限付きサイト」から入手したファイルの設定になるため,実行できなくなります(図4)。 ただし,何回か試したところ,ストリーム情報はキャッシュされているらしく,ストリームを編集した直後には,実行ファイルの動作が変わりませんでした。反映に少し時間がかかることを考えて利用する必要があります。 |
技術開発本部 .NETセンタ 主任技師