連載
» 2006年09月05日 08時30分 UPDATE

元麻布春男のWatchTower「Windows Vista編」:第8回 Vistaにおけるデバイスドライバのゆくえ (1/2)

PCウオッチャーの元麻布春男氏が、さまざまな切り口で最新PC事情を分析する本連載。今回はWindows Vistaにおけるデバイスドライバの扱いをチェックした。

[元麻布春男,ITmedia]

デバイスドライバの脆弱性が潜在的なセキュリティホールになる

 前回の連載の最後でも記したように、July CTPではWindows Updateのオプションで、各種ハードウェアに対応したデバイスドライバが配布される。古いビルドでは、どうしてもデバイスドライバが間に合わず、Windows XP用のものを流用しなければならないことが多かった。だが、Windows Vistaで大きく変わる部分の1つがデバイスドライバであり、既存のものを流用するのは望ましいことではない。

 Windows Vistaのデバイスドライバ環境が変わるのは、セキュリティと安定性の向上を図ってのことだ。もう少し具体的に言えば、現在カーネルモードで動作しているデバイスドライバのうち、必要性の少ないものをユーザーモードに移そうということである。

 元々Windows NTのアーキテクチャでは、デバイスドライバの多くがユーザーモードで動作するサブシステムドライバと、カーネルモード(Windows Executive)で動作するカーネルモードドライバで構成されていた。カーネルモードで動作するコードは、システム全体を不安定にすることが可能であり、これを極力減らそうという発想であった。

 しかしWindows NT 4.0以降、多くのドライバがカーネルモードへ移されていく。その最大の理由は、Windows 9xから主役の座を奪うためだったと思われる。Windows NT 4.0がリリースされた1996年当時、デスクトップの主役だったのはWindows 95であった。Windows 95はWindows 95 OSR2(OEM Service Release 2)となり、Windows 98、Windows 98 Second Editionと進化して行き、相変わらずデスクトップの主役であった。Windows NTがWindows 9xに苦戦したのは、グラフィックス性能やDirectX系APIのサポートで見劣りしたからだ。

 デバイスドライバをカーネルモードへ移すことは、システムの安定性という観点からはマイナスだが、性能の向上には役立つ(コンテキストスイッチの際のオーバーヘッドが小さいなど)。Windows NT 4.0はWindows 9xに対抗するため、あえて安定性より性能をとったことになるが、このおかげもあって、だんだんと主流のOSとして認められていく。とくにプラグ&プレイのサポートが加わったWindows 2000以降その流れは強まり、Microsoft自身がWindows 9x系OSの開発を打ち切ったこともあり、Windows NTの流れをくむWindows XPが、すべてのPCにおいて主役となった。

 この間、デバイスドライバの大半をカーネルモードにおくというWindows NT 4.0の方針は維持され続けてきた。おかげで性能は上がったが、デキのよくないディスプレイドライバやサウンドドライバが、簡単にシステムをリブートさせてしまう、という問題も抱えたままになってしまった。これは同時に、デバイスドライバに潜む脆弱性が潜在的なセキュリティホールになるということでもある。

Windows Vistaではドライバモデルが大幅に見直されてセキュアな環境を確保

ht_0609fsx00.jpg Vistaでドライバ導入時に表示される警告画面

 Windows Vistaでは、ドライバモデルが見直され、カーネルモードドライバとユーザーモードドライバを組み合わせた、いわばWindows NT 3.xへの先祖返りが行われる。これにより、システムの安定性とセキュリティを向上させることが狙いだ。とくに、レガシーの少ないx64版は、デバイスドライバに限らず、カーネルモードで動くコードが厳しく制限される。具体的には、デジタルサインのないコード(デバイスドライバだけでなく、EXEやDLLを含む)をカーネルモードで動かすことはできなくなる

 x86版(32ビット版)では、既存のアプリケーションやデバイスドライバとの互換性を保つ意味から、デジタルサインのないコードをカーネルモードで動かすことが認められるが、この場合も制約が加わる。著作権保護されたHD DVDやBlu-rayコンテンツの再生をサポートするため、Windows Vistaではセキュアな環境、Protected Video Pathが用いられる。システムに1つでもデジタルサインのないカーネルモードドライバが組み込まれると、Protected Video Pathは成立しない。言い換えれば、ディスプレイドライバがデジタルサインされているだけではだめで、すべてのカーネルモードドライバにデジタルサインが必要になる。カーネルモードで動作して、セキュアなデータを取り出そうとするようなマルウェアを排除するためだろう。

 Windows 9xからWindows NT/2000への移行を促すために、当時のMicrosoftはWindowsロゴ取得の条件として、アプリケーションやデバイスドライバがWindows 9xとWindows NT/2000両方に対応することを求めた。おそらくWindows Vistaのリリースに際しては、Windowsロゴ取得の条件として32ビット版と64ビット版の両方に対応することを求めてくるだろう。デベロッパは、ロゴ取得のためには、うちは32ビット版だけ対応すればいいや、などとは言えなくなるはずである(Windowsロゴを取得しないと、大手PCベンダへの採用が著しく不利になる)。64ビット版のドライバを作成するのにデジタルサインが必要になるとしたら、それを32ビット版に使わない手はない。おそらくカーネルモードドライバのデジタルサイン対応は急速に進むだろう。

       1|2 次のページへ

Copyright© 2016 ITmedia, Inc. All Rights Reserved.