こんにちは、阿久津です。昨日、USBメモリ経由で侵入するウイルスの危険性が告知されました。この問題はMicrosoftセキュリティアドバイザリ2286198で説明されているように、ショートカットファイルが参照するアイコン表示ロジックの脆弱性を狙ったものです。同セキュリティホールは、既に更新プログラムがリリースされ、8月上旬にはWindows Update経由で配布されました(図01)。

図01: 「Windows Update」を確認しますと、8月上旬の時点で「セキュリティ更新プログラム(KB2286198)」が適用されているはずです。同更新プログラムが見当たらない場合は、すぐに適用してください

そもそもWindows OSの自動実行は、自動的に起動する実行ファイルやアイコンファイル名が記述されているAutorun.infファイルを参照しています。この機能はWindows OS当初からサポートされており、筆者の記憶が確かなら、Windows XP SP(Service Pack)2から、USBメモリに代表されるリムーバブルストレージもサポートされるようになりました。言わずもがな同機能はWindows 7に至るまで採用されており、利便性を考えれば有用な機能です。しかし、セキュリティという観点から見れば、危険なことこの上ありません。以前からWindows OSを使っている方であれば、とっさにエントリ「NoDriveTypeAutoRun」の存在を思い出すでしょう。

今回は新たなセキュリティホールが新たに発見された場合を想定し、まずはNoDriveTypeAutoRunを用いた、すべてのデバイスを対象にした自動実行を抑制するチューニングからお届けします。

すべてのデバイスを対象にした自動実行を抑制する

1.[Win]+[R]キーを押して「ファイル名を指定して実行」を起動し、テキストボックスに「regedit」と入力してから<OK>ボタンをクリックします。
2.レジストリエディターが起動したら、HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ Explorerキーまでたどって開きます。
3.右ペインにあるDWORD値「NoDriveTypeAutoRun」を右クリックし、メニューから<削除>を選択します。
4.確認をうながすダイアログが起動したら<はい>ボタンをクリックします。
5.次にルートから、HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ Explorerキーまでたどって開きます(ない場合は作成します)。
6.右ペインの何もないところを右クリックし、メニューから<新規>→<DWORD値>と選択します。
7.エントリ名を「NoDriveTypeAutoRun」に変更したら、ダブルクリックします。
8.ダイアログが起動したら、値のデータに「ff」と入力して<OK>ボタンをクリックします。
9.[F5]キーを押して変更内容をシステムに反映させてから、レジストリエディターを終了します。

これでチューニング完了です(図02~10)。

図02: [Win]+[R]キーを押して「ファイル名を指定して実行」を起動し、テキストボックスに「regedit」と入力して<OK>ボタンをクリックします

図03: レジストリエディターが起動したら、HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ Explorerキーまでたどって開きます。右ペインにある「NoDriveTypeAutoRun」を右クリックし、メニューから<削除>を選択します

図04: 確認をうながすダイアログが起動したら、<はい>ボタンをクリックします

図05: 次にルートから、HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ Policiesキーまでたどって開きます。Policiesキーを選択した状態で右クリックし、メニューから<新規>→<キー>と選択します

図06: キー名「新しいキー #1」を「Explorer」に変更します

図07: Explorerキーを選択して開きます。右ペインの何もないところを右クリックし、メニューから<新規>→<DOWRD値>と選択します

図08: DWORD値「新しい値 #1」の名称を「NoDriveTypeAutoRun」に変更します

図09: DWORD値「NoDriveTypeAutoRun」をダブルクリックで開き、値のデータに「ff」と入力して<OK>ボタンをクリックします

図10: あとは[F5]キーを押して変更内容をシステムに反映させてから、レジストリエディターを終了します

早速結果を確認してみましょう。コンピュータにUSBメモリを接続しますと、それまで表示されていた自動再生ダイアログが起動しなったはずです。ステップ08で入力したデータ値は、「ff」の場合、全種類のドライブが対象。データ値が「b5」の場合は、CD/DVDドライブやリムーバブルメディアドライブを対象に機能を抑制します(図11)。

図11: 初期状態では自動再生ダイアログが起動し、OSの基本的なアクションとAutorun.infに記述されたアクションが並びます。チューニングにより、このダイアログが起動しなくなりました

このデータ値は下記に示した表に並ぶ値の和を設定するもので、「b5」は「0x01(不明な種類のドライブ)+0x04(リムーバブルメディアドライブ)+0x10(ネットワークドライブ)+0x20(CD/DVDドライブ)+0x80(不明な種類のドライブ)」と各設定値の和が示されたもの。本エントリを作成すべきはシステム全体に影響を及ぼす、HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ Explorerキーであり、初期状態ではカレントユーザーを対象にする、HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ Explorerキーに同エントリが存在します。そのため今回は情報の分散を避けるため、HKEY_CURRENT_USER~の同エントリを削除し、HKEY_LOCAL_MACHINE~へ同エントリを作成しました。

■表 NoDriveTypeAutoRunのデータ値
内容
0x01 不明なドライブに対する自動実行を無効にします
0x04 リムーバブルメディアドライブに対する自動実行を無効にします
0x08 固定ドライブに対する自動実行を無効にします
0x10 ネットワークドライブに対する自動実行を無効にします
0x20 CD/DVDドライブに対する自動実行を無効にします
0x40 RAMディスクに対する自動実行を無効にします
0x80 不明なドライブに対する自動実行を無効にします
0xFF すべての種類のドライブに対する自動実行を無効にします

しかし、この手順を行なっても冒頭のセキュリティホールと直結するアイコン情報は自動的に取得されてしまいます。Autorun.infの読み込みを抑制するには、HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ IniFileMappingキーで操作を行なわなければなりません。続いてAutorun.infの参照を無効にするチューニングをお送りしましょう(図12)。

図12: 先のチューニングを行なってから「コンピューター」を開いても、Autorun.infで指定したアイコンは表示されたままです

Autorun.infの参照を無効にする

1.[Win]+[R]キーを押して「ファイル名を指定して実行」を起動し、テキストボックスに「regedit」と入力してから<OK>ボタンをクリックします。
2.レジストリエディターが起動したら、HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ IniFileMapping \ Autorun.infまでたどって開きます(ない場合は作成します)。
3.右ペインにある文字列値「(既定)」をダブルクリックします。
4.ダイアログが起動したら、値のデータに「@SYS:DoesNotExist」と入力して<OK>ボタンをクリックします。
5.[F5]キーを押して変更内容をシステムに反映させてから、レジストリエディターを終了します。

これでチューニング完了です(図13~16)。

図13: 先の手順を参考にレジストリエディターを起動し、HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ IniFileMappingキーまでたどって開きます。IniFileMappingキーを右クリックし、メニューから<新規>→<キー>と選択します

図14: キー名「新しいキー #1」を「Autorun.inf」に変更します

図15: 右ペインにある文字列値「(既定)」をダブルクリックし、ダイアログが起動したら、値のデータに「@SYS:DoesNotExist」と入力して<OK>ボタンをクリックします

図16: [F5]キーを押して変更内容をシステムに反映させてから、レジストリエディターを終了します

早速結果を確認してみましょう。コンピュータにUSBメモリを接続しますと、それまで表示されていたアイコンが表示されなくなりました。つまり、Autorun.infが参照されないため、同ファイル内で指定しているUSBメモリ内のアイコンファイル(拡張子「.ico」)の参照も無効になるからです(図17)。

図17: チューニングを行なうとUSBメモリを接続してもAutorun.infが参照されないため、アイコンが表示されなくなります

以上のチューニングで、Windows 7における自動実行機能およびAutorun.infファイルの参照が無効になるため、USBメモリをコンピュータに接続しただけでは、ウイルスに感染しなくなります。もちろんUSBメモリに割り当ててられたドライブを開くことで、Windows 7はアイコン情報を参照してしまうため、冒頭で述べたセキュリティホールが存在する場合、危険にされされることに。チューニングの有無にかかわらず、セキュリティホールを修正する更新プログラムは必ず適用してください。

それでは、また次号でお会いしましょう。

阿久津良和(Cactus)