IEEE1394とは何か
IEEE1394について説明するまえに、簡単にスクリーンロックについて触れておこう。
スクリーンロックとは、ログオン状態のWindowsを不正な操作から守るために画面をロックする機能である。WindowsキーとLキーを同時に押すことで機能する。
スクリーンロックはユーザ認証で正しいパスワードを入力すれば解除できるので、悪意のある人にパスワードが容易に推測されないように「!p&H1f8E」といった推測の困難なパスワードを設定することが推奨されている。
推測の困難なパスワードを設定していれば、ログオン状態のWindowsを不正な操作から守るのにスクリーンロックはとても効果的でお勧めなのだが、じつはこのスクリーンロックを数十秒で強制解除される問題が修正されることなく、今も野放しになっている。
そして、この強制解除の問題が起きる直接の原因となっているのがIEEE1394なのである。
強制解除のスクリプトを実行すると何が起きるか
IEEE1394とは、ソニーではi.LINK、アップルではFireWireと呼ばれるシリアルバスの規格で、最近はUSB 2.0が普及しているため見かけなくなったがiPod classicの第3世代までは充電するのにIEEE1394を使い接続していたので、見たことのある人も多いと思う。(図2)
2008年、Adam Boileau氏が、IEEE1394経由で、接続先のメモリに格納されているユーザ認証処理を行う部分を書き換えて、ログオン画面やスクリーンロックのユーザ認証をパスワードなしで強制解除する実証用スクリプト「winlockpwn」を公開している。もちろん、メモリを読み書きできるという問題を注意喚起するためである。
筆者も実際にIEEE1394を搭載したノートパソコンにWindows XP Professional (以降XP) Service Pack 3をインストールして、現時点で提供されている全てのセキュリティ更新プログラムをインストールした状態でこのスクリプトを試してみたが、8文字以上の推測の困難なパスワードを設定しても23秒でログオン画面やスクリーンロックのユーザ認証をパスワード無しで強制解除することができた(図3)(図4)(図5)。
つまり現時点では、セキュリティ更新プログラムをインストールしたり、推測の困難なパスワードを設定したりしても、この手法を用いたユーザ認証の強制解除を防ぐことはできない。そもそも、この手法はIEEE1394のOHCI(Open Host Controller Interface)規格にある機能を悪用していることから、修正される見通しは今のところない。
さらに恐ろしいのは、XPだけではなくVistaや7にも同じ問題が指摘されていることだ。筆者はXPと7で同じ手法を使いスクリーンロックを強制解除できることを確認している。