必須整合性コントロール
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/02/11 09:54 UTC 版)
必須整合性コントロール (英語: Mandatory Integrity Control, MIC)[1] は、Windows Vistaから追加された、セキュリティ保護可能なオブジェクトのアクセスを制御する方法である。
アーキテクチャ
子プロセスが作成される際、親プロセスの整合性レベル(英語: Integrity Level, IL)に応じて整合性レベルが付与され、UIPIはこれを使用して整合性レベルが低いプロセスから高いプロセスへのプロセス間通信をブロックする。プロセスの整合性レベルは、各プロセスオブジェクトに存在するアクセストークン内で定義される。プロセスが、あるセキュリティ保護可能なオブジェクトにアクセスしようとした際、セキュリティ参照モニタ(英語: Security Reference Monitor, SRM)は、そのプロセスのアクセストークン内の整合性レベルと、そのオブジェクトのセキュリティ記述子内のシステムアクセス制御リスト(英語: SACL)内に存在する、オブジェクトを使用できる最小整合性レベルが定義された整合性レベル専用のアクセス制御エントリを比較し、プロセスの整合性の方がそれより低ければ、アクセス拒否エラーコード(ERROR_ACCESS_DENIED
、0x5
)が返される。
整合性レベル
整合性レベルは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]を使って異なるプロセスへデータを送ったりすることはできない。
関連項目
- ユーザーインターフェイス特権の分離 (UIPI)
- icacls
- セキュリティ識別子
- 強制アクセス制御
脚注
- ^ “Windows Vista 開発者ストーリー用語集 - MSDNライブラリ”. MSDN. 2016年7月3日閲覧。
- ^ Mark Russinovich. “PsExec, User Account Control and Security Boundaries”. 2007年10月8日閲覧。
- ^ “CreateRemoteThread Function (Windows)”. MSDN. 2007年10月8日閲覧。
- ^ “WriteProcessMemory Function”. MSDN. 2007年10月8日閲覧。
参考文献
- “イベント 1047 - 標準の整合性レベルのイントラネット - TechNet”. Microsoft (2010年6月). 2016年7月3日閲覧。
- “プログラマが知っておくべきWindows 7の仕組み - Windows 7時代のセキュリティと互換性の常識を身につけよう”. 日経BP (2010年10月14日). 2016年7月3日閲覧。
外部リンク
- 必須整合性コントロールのページへのリンク