Kernel Patch Protection

Kernel Patch Protection (KPP) とは



Kernel Patch Protection、一般にはPatch Guardとして知られるこの技術は、マイクロソフト64ビット版Windowsにおいて、カーネルへの非公式なパッチ適用を阻止する仕組みです。KPPは2005年にWindows XP x64とWindows Server 2003 SP1で初めて実装され、以来、システムセキュリティと信頼性を確保する重要な役割を果たしています。

カーネルパッチングの意義



ここで「カーネルへのパッチの適用」、すなわちカーネルパッチングとは、公式にサポートされていない方法でWindowsの中核であるカーネルに修正を加える行為を指します。このような行為は、システムセキュリティに重大な脅威を及ぼす可能性があるため、マイクロソフトはこうした方法を全く支持せず、64ビット版では技術的にそれを阻止することを選択しました。

32ビット版のWindowsでは、アンチウイルスソフトウェア開発者がカーネルパッチする手法を用いるケースもありましたが、これが64ビット版では通用しなくなったため、KPPはソフトウェアベンダーに対し、カーネルパッチ技術を使用しない専用の設計を要求する結果となり、これに対して批判も呼んでいます。

KPPの限界と批評



ただし、KPPは完全な防御策というわけではありません。そのため、悪意のあるソフトウェアがKPPの防御を回避する手法を見つけやすく、これはKPPに対するさらなる批判を招いています。これにより、不正な方法でカーネルパッチを適用していた正当なアプリケーションが困難な状況に陥ることもあります。

技術的な概要



Windows NT系のアーキテクチャでは、デバイスドライバカーネルに同等の権限を持つように設計されていますが、実際にはデバイスドライバカーネルの核心構造を改変することは想定されていません。x86版ではこのようなパッチが可能である一方で、64ビット版ではマイクロソフトが明確な制限を加えました。このKPPの技術は、カーネルの安全な保護システムが変更されていないかを定期的に確認する役割を持ちます。

もし改変が検出された場合、Windowsはバグチェックをトリガーし、ブルースクリーンを表示しながら再起動する仕組みです。

以下のような変更が禁止されています:
  • - システムサービステーブルの改変
  • - 割り込みディスクリプタテーブルの改変
  • - グローバルディスクリプタテーブルの改変
  • - カーネルスタックの不適切な使用
  • - カーネルおよび関連ライブラリの改変

ただし、デバイスドライバ同士が互いにパッチをかけることはKPPの防護外であり、完全にカーネルへの不正なパッチ適用を防ぐことは難しいのが現実です。しかし、KPPはその効果を非常に重要視しており、高度な難読化を行うことで、これらの回避試行を抑え込もうとしています。

2005年の初回実装以降、マイクロソフトはKPPに対して二度の主要なアップデートを行っており、それぞれは既知の回避策に対する対策を含んでいます。KPPはサポートされない手法でのカーネルパッチングを防止し、システムの堅牢性を高めるために継続的な改善が求められています。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。