強制整合性制御(MIC )は、 Windows Vista以降のコアセキュリティ機能であり、実行中のプロセスに整合性レベル(IL)に基づいて強制アクセス制御を追加します。ILはオブジェクトの信頼性レベルを表します。このメカニズムの目的は、同じユーザーアカウントで実行されている、より信頼性の高いコンテキストと比較して、信頼性が低い可能性のあるコンテキスト(プロセス、ファイル、その他のセキュリティ保護可能なオブジェクト)のアクセス権限を制限することです。
必須整合性制御は、セキュリティ記述子内のオブジェクトの IL を表す新しいアクセス制御エントリ (ACE) タイプを使用して定義されます。Windows では、アクセス制御リスト(ACL) を使用して、ユーザーまたはグループにアクセス権 (読み取り、書き込み、実行のアクセス許可) と特権を付与します。IL は、初期化時にサブジェクトのアクセス トークンに割り当てられます。サブジェクトがオブジェクト (ファイルなど) にアクセスしようとすると、セキュリティ参照モニターによって、サブジェクトのアクセス トークンの整合性レベルとオブジェクトのセキュリティ記述子の整合性レベルが比較されます。Windows では、サブジェクトの IL がオブジェクトより高いか低いか、および新しいアクセス制御エントリ (ACE) の整合性ポリシー フラグに応じて、許可されるアクセス権が制限されます。セキュリティ サブシステムは、ACL が提供するユーザー制御による任意アクセスと区別するために、必須ラベルとして整合性レベルを実装します。
Windows Vista では、低( SID : S-1-16-4096)、中( SID: S-1-16-8192)、高( SID: S-1-16-12288)、システム( SID: S-1-16-16384) の 4 つの整合性レベルが定義されています。[ 1 ]既定では、一般ユーザーが開始したプロセスには中IL が割り当てられ、管理者特権で開始されたプロセスには高IL が割り当てられます。[ 2 ]整合性レベルを導入することで、MIC ではアプリケーションのクラスを分離できるようになり、潜在的に脆弱なアプリケーション (インターネットに接続するアプリケーションなど) をサンドボックス化するなどのシナリオが可能になります。低IL のプロセスは低整合性プロセスと呼ばれ、Windows でアクセス制御が強制される、より高い IL のプロセスよりもアクセス権限が少なくなります。
アクセス制御リストを持つオブジェクト(ファイル、レジストリキー、他のプロセスやスレッドなどを含む名前付きオブジェクトなど)は、システムアクセス制御リスト(SAC)にエントリを持ち、そのエントリによってアクセスが制御されます。このエントリは、オブジェクトを使用できるプロセスの最小整合性レベルを定義します。Windowsは、プロセスがオブジェクトに書き込みや削除を行えるのは、その整合性レベルがオブジェクトによって指定された要求整合性レベル以上である場合のみであることを確認します。[ 2 ]さらに、プライバシー上の理由から、高いILを持つプロセスオブジェクトは、低いILを持つプロセスからの読み取りアクセスでさえも、境界外となります。[ 3 ]
その結果、プロセスはより高いILを持つ別のプロセスと対話することができません。そのため、プロセスはWindows APIの関数[ 4 ]を用いてより高いILのプロセスにDLLを挿入したり、関数[ 5 ]を用いて別のプロセスにデータを送信したりするといった機能を実行することができません。CreateRemoteThread()WriteProcessMemory()
プロセスは、そのプロセスを起動したプロセスの整合性レベルを継承しますが、プロセス作成時に整合性レベルをカスタマイズできます。強制整合性制御は、ユーザーインターフェース特権分離(UIPI)技術におけるウィンドウメッセージの境界定義だけでなく、 Adobe Reader、Google Chrome、Internet Explorer、Windows Explorerなどのアプリケーションで、システム内の脆弱なオブジェクトからドキュメントを分離するためにも使用されます。 [ 1 ]
Internet Explorer 7では、MICベースの「保護モード」設定が導入されました。これは、セキュリティゾーン設定に基づいて、ウェブページを低整合性プロセスとして開くかどうか(オペレーティングシステムがMICをサポートしている場合)を制御し、一部のセキュリティ脆弱性を防止します。この場合、Internet Explorerは低整合性プロセスとして実行されるため、システムレベルのオブジェクトを変更することはできません。ファイルとレジストリの操作は仮想化されます。Adobe Reader 10とGoogle Chromeは、マルウェアに対する脆弱性を低減するためにこの技術を導入している注目すべきアプリケーションです。[ 6 ]
Microsoft Office 2010では、Excel、PowerPoint、Word向けに「保護されたビュー」という隔離されたサンドボックス環境が導入され、潜在的に危険なドキュメントがシステム上のコンポーネント、ファイル、その他のリソースを変更することを禁止しています。[ 7 ]保護されたビューは低整合性プロセスとして動作し、Windows Vista以降のバージョンのWindowsでは、MICとUIPIを使用してサンドボックスをさらに制限します。[ 8 ]
ただし、場合によっては、高 IL プロセスが低 IL プロセスに対して特定の機能を実行する必要がある場合や、低 IL プロセスが高 IL プロセスだけがアクセスできるリソースにアクセスする必要がある場合があります (たとえば、保護モードで Web ページを表示する場合、インターネットからダウンロードしたファイルをユーザーが指定したフォルダーに保存する)。[ 1 ]高 IL プロセスと低 IL プロセスは、ファイル、名前付きパイプ、LPC 、またはその他の共有オブジェクトを使用して、引き続き相互に通信できます。共有オブジェクトの整合性レベルは、低 IL プロセスと低 IL プロセスの両方で共有される必要があります。[ 3 ] MIC は、低 IL プロセスが高 IL プロセスとオブジェクトを共有することを妨げないため、高 IL プロセスの欠陥をトリガーして、低 IL プロセスの代わりに動作させ、スクワッティング攻撃を引き起こす可能性があります。[ 3 ] ただし、 MIC を利用する ユーザーインターフェイス権限分離を使用することで、シャッター攻撃を防ぐことができます。