「Kernel Patch Protection」の版間の差分
Darklanlan (会話 | 投稿記録) m -stub |
カテゴリを変更 |
||
(3人の利用者による、間の4版が非表示) | |||
1行目: | 1行目: | ||
[[Image:Kernel Layout.svg|thumb|200px|[[カーネル]]は、[[アプリケーションソフトウェア]]と[[コンピュータ]]上の[[ハードウェア]]を接続する]] |
{{Pathnav|[[Microsoft Windows]]|[[Windowsのセキュリティ機能]]|frame=1}}[[Image:Kernel Layout.svg|thumb|200px|[[カーネル]]は、[[アプリケーションソフトウェア]]と[[コンピュータ]]上の[[ハードウェア]]を接続する]] |
||
'''Kernel Patch Protection''' (カーネル・パッチ・プロテクション、'''KPP''')とは、[[Microsoft Windows]]の[[64ビット]]([[x64]])版が持つ、[[カーネル]]への[[パッチ]]の適用を妨ぐ機構で、一般には'''Patch Guard''' (パッチ・ガード)の名称で知られる。[[2005年]]のx64版[[Microsoft Windows XP|Windows XP]]と同[[Microsoft Windows Server 2003|Windows Server 2003]] Service Pack 1で最初に搭載された<ref name="KPP FAQ">{{cite web|url=http://www.microsoft.com/whdc/driver/kernel/64bitpatch_FAQ.mspx|title=Kernel Patch Protection: Frequently Asked Questions|publisher=[[マイクロソフト]]|date=22 January 2007|accessdate=2012-02-25}} ([http://msdn.microsoft.com/ja-jp/windows/hardware/gg487353.aspx 日本語])</ref>。 |
'''Kernel Patch Protection''' (カーネル・パッチ・プロテクション、'''KPP''')とは、[[Microsoft Windows]]の[[64ビット]] ([[x64]]) 版が持つ、[[カーネル]]への[[パッチ]]の適用を妨ぐ機構で、一般には'''Patch Guard''' (パッチ・ガード)の名称で知られる。[[2005年]]のx64版[[Microsoft Windows XP|Windows XP]]と同[[Microsoft Windows Server 2003|Windows Server 2003]] Service Pack 1で最初に搭載された<ref name="KPP FAQ">{{cite web|url=http://www.microsoft.com/whdc/driver/kernel/64bitpatch_FAQ.mspx|title=Kernel Patch Protection: Frequently Asked Questions|publisher=[[マイクロソフト]]|date=22 January 2007|accessdate=2012-02-25}} ([http://msdn.microsoft.com/ja-jp/windows/hardware/gg487353.aspx 日本語])</ref>。 |
||
ここで言及する「カーネルへの[[パッチ]]の適用」(以下「''カーネル・パッチング''」と表記する)とは、Windows |
ここで言及する「カーネルへの[[パッチ]]の適用」(以下「''カーネル・パッチング''」と表記する)とは、Windows[[オペレーティングシステム]]の中枢コンポーネントまたはカーネルに対して、サポートされない(非公式な)修正を意味するものである。このような修正は、[[システム]]の[[セキュリティ]]と[[信頼性]]を大きく損ねるものである為、[[マイクロソフト]]によって全くサポートされない。しかしながら、マイクロソフトは推奨しないものの、Windowsの[[x86]]版でのカーネル・パッチングは技術的に可能である。しかし、[[x64]]版のWindowsにおいて、マイクロソフトはカーネル・パッチングを技術的に阻害する仕組みを導入することを決定した。 |
||
カーネル・パッチは、[[32ビット]] (x86) 版のWindowsにおいて技術的に可能であり、いくつかの[[アンチウイルス]]ソフトウェアの開発者はアンチウイルス又はその他のセキュリティサービスの実装にカーネル・パッチを利用した。この種のアンチウイルスソフトウェアは、x64版Windowsが動作するコンピュータ上では動作しない。このため、Kernel Patch Protectionは、アンチウイルスメーカー各社に対して、カーネル・パッチの技法を用いないようにソフトを再設計することを強いたと批判された。 |
カーネル・パッチは、[[32ビット]] (x86) 版のWindowsにおいて技術的に可能であり、いくつかの[[アンチウイルス]]ソフトウェアの開発者はアンチウイルス又はその他のセキュリティサービスの実装にカーネル・パッチを利用した。この種のアンチウイルスソフトウェアは、x64版Windowsが動作するコンピュータ上では動作しない。このため、Kernel Patch Protectionは、アンチウイルスメーカー各社に対して、カーネル・パッチの技法を用いないようにソフトを再設計することを強いたと批判された。 |
||
19行目: | 19行目: | ||
==技術概略== |
==技術概略== |
||
Windows |
[[Windows NT系]]アーキテクチャーにおいて、[[デバイスドライバ]]はカーネルと同じ[[リングプロテクション|特権レベル]]を持つように設計されている<ref name="Introduction">{{cite web |
||
|url=http://uninformed.org/index.cgi?v=8&a=5&p=2 |
|url=http://uninformed.org/index.cgi?v=8&a=5&p=2 |
||
|author=Skywing |
|author=Skywing |
||
27行目: | 27行目: | ||
|date=September 2007 |
|date=September 2007 |
||
|accessdate=20 September 2007 |
|accessdate=20 September 2007 |
||
}}</ref>。デバイスドライバはカーネル内のコアシステム構造を改変・パッチしないものとされている。[[x86]]版Windowsでは、Windowsはドライバがカーネルにパッチを行 |
}}</ref>。デバイスドライバはカーネル内のコアシステム構造を改変・パッチしないものとされている。[[x86]]版Windowsでは、Windowsはドライバがカーネルにパッチを行うことを禁止していない<ref name="KPP FAQ"/>。しかし、この見込みはx86システムによるものではなく、いくつかのプログラム、特に正規のセキュリティおよび[[アンチウイルスソフトウェア|アンチウイルス]]プログラムがコアカーネル構造を改変するドライバを読み込んで必要な処理を行うための設計である<ref name="Introduction"/><ref name="Fathi">{{cite web |
||
|url=http://www.guardian.co.uk/technology/2006/sep/28/viruses.security |
|url=http://www.guardian.co.uk/technology/2006/sep/28/viruses.security |
||
|title=Antivirus vendors raise threats over Vista in Europe |
|title=Antivirus vendors raise threats over Vista in Europe |
||
35行目: | 35行目: | ||
|date=28 September 2006 |
|date=28 September 2006 |
||
|accessdate=20 September 2007 |
|accessdate=20 September 2007 |
||
}} "This has never been supported and has never been endorsed by us. It introduces insecurity, instability, and performance issues, and every time we change something in the kernel, their product breaks." —Ben Fathi, corporate vice president of Microsoft's security technology unit</ref> |
}} "This has never been supported and has never been endorsed by us. It introduces insecurity, instability, and performance issues, and every time we change something in the kernel, their product breaks." —Ben Fathi, corporate vice president of Microsoft's security technology unit</ref>。 |
||
[[x64]]版Windowsでは、マイクロソフトはドライバ |
[[x64]]版Windowsでは、マイクロソフトはドライバが改変可能か不可であるかの制限を強制することを決断した。Kernel Patch Protectionはこれらの制限を強制するための技術である。これはカーネルの保護システム構造が改変されていないことを定期的にチェックする。改変が検出されると、Windowsはバグチェック<ref>システムが深刻なエラーなどにより停止したときに、その時の状態を分析・記録する処理のこと</ref>を開始して[[ブルースクリーン]]を表示および再起動し、システムをシャットダウンする<ref name="Introduction"/><ref name="Patching Policy">{{cite web |
||
|url=http://www.microsoft.com/whdc/driver/kernel/64bitpatching.mspx |
|url=http://www.microsoft.com/whdc/driver/kernel/64bitpatching.mspx |
||
|title=Patching Policy for x64-Based Systems |
|title=Patching Policy for x64-Based Systems |
||
|publisher=[[ |
|publisher=[[マイクロソフト]] |
||
|date=22 January 2007 |
|date=22 January 2007 |
||
|accessdate=20 September 2007 |
|accessdate=20 September 2007 |
||
}}</ref> |
}}</ref>。 |
||
バグチェックに表示される番号は<code>0x109</code>で、 |
バグチェックに表示される番号は<code>0x109</code>で、コードは<code>CRITICAL_STRUCTURE_CORRUPTION</code>である。 |
||
次のような改変操作が禁止される<ref name="Patching Policy" />。 |
次のような改変操作が禁止されている<ref name="Patching Policy" />。 |
||
*[[Windowsサービス|システムサービス]]テーブルの改変 |
*[[Windowsサービス|システムサービス]]テーブルの改変 |
||
64行目: | 64行目: | ||
}}</ref> |
}}</ref> |
||
Kernel Patch Protectionはデバイスドライバ |
Kernel Patch Protectionはデバイスドライバがカーネルを改造することしか阻止できないことを補足しておく。デバイスドライバが他のデバイスドライバをパッチすることに対しては、いかなる保護も受けられない<ref name="Conclusion">{{cite web |
||
|url=http://uninformed.org/index.cgi?v=6&a=1&p=25 |
|url=http://uninformed.org/index.cgi?v=6&a=1&p=25 |
||
|author=Skywing |
|author=Skywing |
||
74行目: | 74行目: | ||
}}</ref>。 |
}}</ref>。 |
||
最終的には、デバイスドライバ |
最終的には、デバイスドライバはカーネル自身と同じ特権レベルを持っているため、Kernel Patch Protectionの回避とカーネルへのパッチを完全に防ぐことは不可能である<ref name="skape">{{cite web |
||
|url=http://uninformed.org/index.cgi?v=3&a=3&p=3 |
|url=http://uninformed.org/index.cgi?v=3&a=3&p=3 |
||
|title=Introduction |
|title=Introduction |
||
83行目: | 83行目: | ||
|date=December 2005 |
|date=December 2005 |
||
|accessdate=20 September 2007 |
|accessdate=20 September 2007 |
||
}}</ref>。しかし |
}}</ref>。しかし、KPPはカーネルパッチの成功を重大な障害とみなす。高度な難読化コードおよび紛らわしいシンボル名を使って、KPPは隠蔽されたセキュリティ({{Lang|en|security through obscurity}})によってそれを回避する試みを妨げる<ref name="Introduction" /><ref>{{cite web|url=http://uninformed.org/index.cgi?v=6&a=1&p=10|title=Misleading Symbol Names|accessdate=20 September 2007|author=Skywing|date=December 2006|work=Subverting PatchGuard Version 2|publisher=Uninformed}}</ref>。またKPPの定期的な更新によって、短時間に実行される回避技術「動く標的」を次の更新で破壊するだろう。2005年の初版より、マイクロソフトはKPPについて2つの主要なアップデートをリリースした。いずれも前バージョンの既知の回避技術に対して対策を講じている<ref name="Introduction" /><ref name="Microsoft Security Advisory (914784)">{{cite web|url=http://www.microsoft.com/technet/security/advisory/914784.mspx|title=Update to Improve Kernel Patch Protection|accessdate=21 September 2007|author=Microsoft|date=June 2006|work=Microsoft Security Advisory (914784)|publisher=マイクロソフト}}</ref><ref name="Microsoft Security Advisory (932596)">{{cite web|url=http://www.microsoft.com/technet/security/advisory/932596.mspx|title=Update to Improve Kernel Patch Protection|accessdate=21 September 2007|author=マイクロソフト|date=August 2007|work=Microsoft Security Advisory (932596)|publisher=マイクロソフト}}</ref>。 |
||
== 脚注 == |
== 脚注 == |
||
89行目: | 89行目: | ||
== 関連項目 == |
== 関連項目 == |
||
* [[ |
* [[ntoskrnl.exe]] - Windows NT系オペレーティングシステムの中枢 |
||
* [[Linux Security Modules]] |
* [[Linux Security Modules]] |
||
⚫ | |||
⚫ | |||
[[Category:Microsoft Windows]] |
[[Category:Microsoft Windows]] |
||
[[Category:オペレーティングシステムの仕組み]] |
[[Category:オペレーティングシステムの仕組み]] |
||
[[Category: |
[[Category:Windowsのセキュリティ技術]] |
2022年9月23日 (金) 13:18時点における最新版
Kernel Patch Protection (カーネル・パッチ・プロテクション、KPP)とは、Microsoft Windowsの64ビット (x64) 版が持つ、カーネルへのパッチの適用を妨ぐ機構で、一般にはPatch Guard (パッチ・ガード)の名称で知られる。2005年のx64版Windows XPと同Windows Server 2003 Service Pack 1で最初に搭載された[1]。
ここで言及する「カーネルへのパッチの適用」(以下「カーネル・パッチング」と表記する)とは、Windowsオペレーティングシステムの中枢コンポーネントまたはカーネルに対して、サポートされない(非公式な)修正を意味するものである。このような修正は、システムのセキュリティと信頼性を大きく損ねるものである為、マイクロソフトによって全くサポートされない。しかしながら、マイクロソフトは推奨しないものの、Windowsのx86版でのカーネル・パッチングは技術的に可能である。しかし、x64版のWindowsにおいて、マイクロソフトはカーネル・パッチングを技術的に阻害する仕組みを導入することを決定した。
カーネル・パッチは、32ビット (x86) 版のWindowsにおいて技術的に可能であり、いくつかのアンチウイルスソフトウェアの開発者はアンチウイルス又はその他のセキュリティサービスの実装にカーネル・パッチを利用した。この種のアンチウイルスソフトウェアは、x64版Windowsが動作するコンピュータ上では動作しない。このため、Kernel Patch Protectionは、アンチウイルスメーカー各社に対して、カーネル・パッチの技法を用いないようにソフトを再設計することを強いたと批判された。
加えて、Windowsカーネルの設計では、Kernel Patch Protectionはカーネル・パッチングを完全に防ぐことができない[2]。これは、Kernel Patch Protectionは不完全な防御であり、この問題はアンチウイルスメーカー各社の利にはならず、悪意のあるソフトウェアの作者は(KPPの)防御を迂回する方法を簡単に見つける、などの追加の批判を呼んだ。しかしながら、サポートされない方法でのカーネル・パッチングを行っていた適正なソフトウェアも、カーネル・パッチングによってシステムの安定性や信憑性を妨害することがある。
技術概略
[編集]Windows NT系アーキテクチャーにおいて、デバイスドライバはカーネルと同じ特権レベルを持つように設計されている[3]。デバイスドライバはカーネル内のコアシステム構造を改変・パッチしないものとされている。x86版Windowsでは、Windowsはドライバがカーネルにパッチを行うことを禁止していない[1]。しかし、この見込みはx86システムによるものではなく、いくつかのプログラム、特に正規のセキュリティおよびアンチウイルスプログラムがコアカーネル構造を改変するドライバを読み込んで必要な処理を行うための設計である[3][4]。
x64版Windowsでは、マイクロソフトはドライバが改変可能か不可であるかの制限を強制することを決断した。Kernel Patch Protectionはこれらの制限を強制するための技術である。これはカーネルの保護システム構造が改変されていないことを定期的にチェックする。改変が検出されると、Windowsはバグチェック[5]を開始してブルースクリーンを表示および再起動し、システムをシャットダウンする[3][6]。
バグチェックに表示される番号は0x109
で、コードはCRITICAL_STRUCTURE_CORRUPTION
である。
次のような改変操作が禁止されている[6]。
- システムサービステーブルの改変
- 割り込みディスクリプタテーブルの改変
- グローバルディスクリプタテーブルの改変
- カーネルで割り当てられていないカーネルスタックの使用
- カーネル、HAL、NDISカーネルライブラリに含まれるコードの改変・パッチ[6][7]
Kernel Patch Protectionはデバイスドライバがカーネルを改造することしか阻止できないことを補足しておく。デバイスドライバが他のデバイスドライバをパッチすることに対しては、いかなる保護も受けられない[8]。
最終的には、デバイスドライバはカーネル自身と同じ特権レベルを持っているため、Kernel Patch Protectionの回避とカーネルへのパッチを完全に防ぐことは不可能である[2]。しかし、KPPはカーネルパッチの成功を重大な障害とみなす。高度な難読化コードおよび紛らわしいシンボル名を使って、KPPは隠蔽されたセキュリティ(security through obscurity)によってそれを回避する試みを妨げる[3][9]。またKPPの定期的な更新によって、短時間に実行される回避技術「動く標的」を次の更新で破壊するだろう。2005年の初版より、マイクロソフトはKPPについて2つの主要なアップデートをリリースした。いずれも前バージョンの既知の回避技術に対して対策を講じている[3][10][11]。
脚注
[編集]- ^ a b “Kernel Patch Protection: Frequently Asked Questions”. マイクロソフト (22 January 2007). 2012年2月25日閲覧。 (日本語)
- ^ a b skape (December 2005). “Introduction”. Bypassing PatchGuard on Windows x64. Uninformed. 20 September 2007閲覧。
- ^ a b c d e Skywing (September 2007). “Introduction”. PatchGuard Reloaded: A Brief Analysis of PatchGuard Version 3. Uninformed. 20 September 2007閲覧。
- ^ Schofield, Jack (28 September 2006). “Antivirus vendors raise threats over Vista in Europe”. The Guardian. 20 September 2007閲覧。 "This has never been supported and has never been endorsed by us. It introduces insecurity, instability, and performance issues, and every time we change something in the kernel, their product breaks." —Ben Fathi, corporate vice president of Microsoft's security technology unit
- ^ システムが深刻なエラーなどにより停止したときに、その時の状態を分析・記録する処理のこと
- ^ a b c “Patching Policy for x64-Based Systems”. マイクロソフト (22 January 2007). 20 September 2007閲覧。
- ^ skape (December 2005). “System Images”. Bypassing PatchGuard on Windows x64. Uninformed. 21 September 2007閲覧。
- ^ Skywing (January 2007). “Conclusion”. Subverting PatchGuard Version 2. Uninformed. 21 September 2007閲覧。
- ^ Skywing (December 2006). “Misleading Symbol Names”. Subverting PatchGuard Version 2. Uninformed. 20 September 2007閲覧。
- ^ Microsoft (June 2006). “Update to Improve Kernel Patch Protection”. Microsoft Security Advisory (914784). マイクロソフト. 21 September 2007閲覧。
- ^ マイクロソフト (August 2007). “Update to Improve Kernel Patch Protection”. Microsoft Security Advisory (932596). マイクロソフト. 21 September 2007閲覧。
関連項目
[編集]- ntoskrnl.exe - Windows NT系オペレーティングシステムの中枢
- Linux Security Modules