Vulnerability Analysis Blog: The Dangers of Windows AutoRunの日本語訳

レジストリでAutoRunを無効にしたときの注意点に関して、元ネタとなっている Vulnerability Analysis Blog: The Dangers of Windows AutoRun を翻訳してみました。間違いや指摘があればツッコミください。

The Dangers of Windows AutoRun

By Will Dormann on April 24, 2008 7:12 PM

こんにちは。私は CERT/CC 脆弱性調査チームの Will Dormann です。数か月前にディジタル写真による感染事例がメディアで報告されました。私は悪意あるコードが実行された方法について知りたかったので、Microsoft の AutoRun および AutoPlay 機能についての調査を開始しました。

Windows95 で導入された AutoRun は、大きく2つの性質があります。

  1. CD-ROMドライブのような特定の種類のデバイスにおいては、デバイスが接続されるかメディアが挿入されると、Windows は Autorun.inf ファイルで指定されたプログラムを自動的に実行します。この機能のセキュリティに対する影響は、物理的にコンピュータにアクセスできる者は、CD-ROMをドライブに挿入することで悪意あるコードを実行できるという点です。しかし、コンピュータへ物理的にアクセスできるということは、攻撃者にあらゆることができる能力を与えることだと、我々はすでに知っていますよね。
  2. Windowsエクスプローラにおいてドライブアイコンがクリックされたときに、Windows はAutorun.inf ファイルで指定されたプログラムを実行します。この場合、コードの実行にはユーザの操作が必要となります。しかし、ドライブのアイコンをクリックすることはドライブの内容を表示すると一般的には思われており、コードが実行される AutoRun の動作は予想外でしょう。

AutoRun の動作を調査するにあたり、私は2つの面白いことに気付きました。

  1. Windows Vistaでは、NoDriveTypeAutoRun レジストリの値は、Windows でドキュメントに記載されているのとは正反対の動作をします。言い換えると、このレジストリの値を変更することによって AutoRun を制限し自分自身を守ろうと思ったなら、それは実際には他のリスクを発生させることになります。我々は、この問題についてUS-CERT Vulnerability Note VU#889747で詳細を公開しました。結論としては、ユーザはUSBメモリなどのアイコンをクリックしてしまうことにより、思いもよらずコードを実行してしまうかも知れない、ということです。
  2. NoDriveTypeAutoRun のドキュメントには、USB大容量記憶装置のAutoRun機能を使用しないことを書かれていますが、これはユーザのシステムにあらゆるUSBデバイスを安全に接続できる、ということを意味しているものではありません。例えば、システムがSanDiskのU3 USBデバイスをCD-ROMドライブとUSB大容量記憶装置の両方として認識したとします*1。攻撃者がU3デバイス内のCD-ROMコンテンツを容易に変更できると考えると、攻撃者がUSBデバイスを差し込むだけで、Windows上で彼らのコードを実行する方法があるということです。他のいかなるユーザによる操作も必要ではありません。

U3ドライブの悪意ある使用方法に関する情報は、特に目新しいものではありません。しかし、AutoRunがどれくらいシステムで無効にされていますか。問題を混乱させているもうひとつの側面は、どのように AutoRun 機能を正しく効果的に無効にするのかが明確にされていない点です。VU#889747は当初、私のテストで効果的とみえた手順をリストにしました。しかしそれらにはMCNメッセージを抑制してしまう副作用があり、CD-ROM や DVD が変更されたことを Windows が検知できなくなりました。

我々の読者の一人がAutoRunを無効にする、もっとも原因に近い方法、AutoRun.infファイルそのものに対する方法、を提供してくれました。以下のレジストリキーをインポートすることによって、Autorun.inf ファイルが AutoRun および AutoPlay 機能の決定に使われることはなくなります。

REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\IniFileMapping\Autorun.inf]
@="@SYS:DoesNotExist"

この設定はネガティブな副作用を引き起こさずに AutoRun 機能を抑制できるように思います。この回避方法の詳細については、Nick Brown のブログの Memory stick worms に記されています。

2008年11月21日更新

Microsoft Windowsは AutoRun の情報を接続されたデバイスからキャッシュするかも知れません。これによる影響は、前述の方法で AutoRun を無効にした後も過去にコンピュータに接続していたデバイス(USBメモリ、ネットワーク共有、その他)において AutoRun 機能がまだ働くかも知れないということです。この理由から、MountPoints2 レジストリキーを各ユーザのレジストリから削除することによってキャッシュを削除することをお勧めします。

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2 

*1:訳注:SanDiskのU3デバイスUSBメモリ内にメモリ領域とCD-ROM領域を持っています。http://www.amazon.co.jp/dp/product-description/B000GCFYGC