必須整合性コントロール

Windows > Windowsのセキュリティ機能 > 必須整合性コントロール

必須整合性コントロール (英語: Mandatory Integrity Control, MIC)[1] は、Windows Vistaから追加された、セキュリティ保護可能なオブジェクトのアクセスを制御する方法である。

アーキテクチャ

[編集]

プロセスが作成される際、親プロセスの整合性レベル(英語: Integrity Level, IL)に応じて整合性レベルが付与され、UIPIはこれを使用して整合性レベルが低いプロセスから高いプロセスへのプロセス間通信をブロックする。プロセスの整合性レベルは、各プロセスオブジェクトに存在するアクセストークン内で定義される。プロセスが、あるセキュリティ保護可能なオブジェクトにアクセスしようとした際、セキュリティ参照モニタ(英語: Security Reference Monitor, SRM)は、そのプロセスのアクセストークン内の整合性レベルと、そのオブジェクトのセキュリティ記述子内のシステムアクセス制御リスト(英語: SACL)内に存在する、オブジェクトを使用できる最小整合性レベルが定義された整合性レベル専用のアクセス制御エントリを比較し、プロセスの整合性の方がそれより低ければ、アクセス拒否エラーコード(ERROR_ACCESS_DENIED0x5)が返される。

整合性レベル

[編集]

整合性レベルはSIDで表され、任意の値で作成することもできるが、Windowsは6つの既定値を定義している。

名前 SID 備考
Untrusted (0) S-1-16-0x0000 Anonymousグループによって作成されたプロセスによって使用される。
Low (1) S-1-16-0x1000 UWPアプリなどAppContainer上のプロセスによって使用される。
Medium (2) S-1-16-0x2000 UACが有効な状態で通常の方法で作成されたプロセスによって使用されている。
High (3) S-1-16-0x3000 UACが有効な状態で昇格されたプロセスによって使用される。もしくは、UACが無効な状態で通常の方法で作成されたプロセスによって使用される。
System (4) S-1-16-0x4000 サービスもしくはシステムコンポーネント(wininit.exe、winlogon.exe、smss.exeなど)のプロセスによって使用される。
Protected (5) S-1-16-0x5000 既定で使用されていない。カーネルモードのプロセスのみ使用可能。

また、プライバシーの理由からより高いILを持つプロセスオブジェクトは低い整合性レベルを持つプロセスからの読み取りアクセスも禁じている[2]

その結果、プロセスはより高いILを持つプロセスと対話することができない。そのためプロセスはCreateRemoteThread()APIファンクション[3]を使ってより高いILプロセスに対してDLLインジェクションを行ったり、WriteProcessMemory()ファンクション[4]を使って異なるプロセスへデータを送ったりすることはできない。

関連項目

[編集]

脚注

[編集]
  1. ^ Windows Vista 開発者ストーリー用語集 - MSDNライブラリ”. MSDN. 2016年7月3日閲覧。
  2. ^ Mark Russinovich. “PsExec, User Account Control and Security Boundaries”. 2007年10月8日閲覧。
  3. ^ CreateRemoteThread Function (Windows)”. MSDN. 2007年10月8日閲覧。
  4. ^ WriteProcessMemory Function”. MSDN. 2007年10月8日閲覧。

参考文献

[編集]

外部リンク

[編集]