必須整合性コントロール (MIC) の概要
必須整合性コントロール(Mandatory Integrity Control、MIC)は、Windows Vistaから導入された重要なセキュリティ機能です。これは、システム内のセキュリティ保護可能なオブジェクトへのアクセス管理を行い、特に
プロセス間通信の安全性を確保することを目的としています。この機能の導入により、異なる整合性レベルを持つ
プロセス間での通信が厳密に制御されるようになりました。
アーキテクチャと機能
MICの基本的な動作は、親
プロセスが持つ整合性レベルに基づいて新たに作成される子
プロセスにも整合性レベルを付与するというものです。整合性レベルは、
プロセスのアクセストークンに格納され、このトークンを参照してセキュリティ参照モニタ(Security Reference Monitor、SRM)がアクセスの可否を判断します。もし
プロセスがセキュリティ保護可能なオブジェクトにアクセスしようとした場合、その
プロセスの整合性レベルとオブジェクトに設定された最小整合性レベルの比較が行われます。
具体的には、対象のオブジェクトのセキュリティ記述子内に設定されたシステムアクセス制御リスト(SACL)を参照し、
プロセスの整合性レベルがそれよりも低い場合、アクセスは拒否されるのです。この場合、エラーコード(ERROR_ACCESS_DENIED、0x5)が返されています。
整合性レベルの設定
整合性レベルは、セキュリティ識別子(SID)という形式で表現されますが、Windowsではあらかじめ定義された6つの整合性レベルが存在します。これらの整合性レベルは、システムのセキュリティを保つために重要な役割を果たしています。特に注目すべきは、高い整合性レベルを持つ
プロセスオブジェクトが、低い整合性レベルの
プロセスからの読み取りアクセスを禁止している点です。
そのため、高い整合性レベルを持つ
プロセスは、同時に低い整合性レベルの
プロセスと直接かかわることができません。この機能によって、より高いセキュリティが確保され、未許可の情報漏洩や不正な操作を未然に防ぐことが可能になります。
この整合性モデルにより、
プロセスは CreateRemoteThread() や WriteProcessMemory() といったAPI関数を通じて、高い整合性レベルの
プロセスに対するDLLインジェクションやデータ送信を行うことができません。これにより、悪意のあるプログラムがセキュリティクリティカルな
プロセスに対して不正にアクセスするリスクが低減されます。
関連リンクと情報
MICは、
ユーザーインターフェイス特権の分離(UIPI)や、アクセスタイプを管理するicacls、さらには強制アクセス制御というセキュリティ機能とも関連しています。これらの知識は特にIT業界に従事する者にとって重要であり、セキュリティを強化するために欠かせないものとなっています。
さらに、MicrosoftのTechNetやその他の技術文献が、MICに関する詳細な情報やその実装方法を提供しています。
今後のWindowsシステムにおいても、このような整合性コントロールの知識はますます重要になっていくでしょう。