技術概略
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2019/09/11 15:12 UTC 版)
「Kernel Patch Protection」の記事における「技術概略」の解説
Windows NT系アーキテクチャーにおいて、デバイスドライバはカーネルと同じ特権レベルを持つように設計されている。デバイスドライバはカーネル内のコアシステム構造を改変・パッチしないものとされている。x86版Windowsでは、Windowsはドライバがカーネルにパッチを行うことを禁止していない。しかし、この見込みはx86システムによるものではなく、いくつかのプログラム、特に正規のセキュリティおよびアンチウイルスプログラムがコアカーネル構造を改変するドライバを読み込んで必要な処理を行うための設計である。 x64版Windowsでは、マイクロソフトはドライバが改変可能か不可であるかの制限を強制することを決断した。Kernel Patch Protectionはこれらの制限を強制するための技術である。これはカーネルの保護システム構造が改変されていないことを定期的にチェックする。改変が検出されると、Windowsはバグチェックを開始してブルースクリーンを表示および再起動し、システムをシャットダウンする。 バグチェックに表示される番号は0x109で、コードはCRITICAL_STRUCTURE_CORRUPTIONである。 次のような改変操作が禁止されている。 システムサービステーブルの改変 割り込みディスクリプタテーブル(英語版)の改変 グローバルディスクリプタテーブル(英語版)の改変 カーネルで割り当てられていないカーネルスタックの使用 カーネル、HAL、NDISカーネルライブラリに含まれるコードの改変・パッチ Kernel Patch Protectionはデバイスドライバがカーネルを改造することしか阻止できないことを補足しておく。デバイスドライバが他のデバイスドライバをパッチすることに対しては、いかなる保護も受けられない。 最終的には、デバイスドライバはカーネル自身と同じ特権レベルを持っているため、Kernel Patch Protectionの回避とカーネルへのパッチを完全に防ぐことは不可能である。しかし、KPPはカーネルパッチの成功を重大な障害とみなす。高度な難読化コードおよび紛らわしいシンボル名を使って、KPPは隠蔽されたセキュリティ(security through obscurity)によってそれを回避する試みを妨げる。またKPPの定期的な更新によって、短時間に実行される回避技術「動く標的」を次の更新で破壊するだろう。2005年の初版より、マイクロソフトはKPPについて2つの主要なアップデートをリリースした。いずれも前バージョンの既知の回避技術に対して対策を講じている。
※この「技術概略」の解説は、「Kernel Patch Protection」の解説の一部です。
「技術概略」を含む「Kernel Patch Protection」の記事については、「Kernel Patch Protection」の概要を参照ください。
- 技術概略のページへのリンク