はじめに
Windowsで「管理者権限があるのに、なぜかファイルが操作できない」「ブラウザがウイルスに感染してもOS全体が壊れないのはなぜ?」と疑問に思ったことはありませんか?
その答えは、ユーザー権限(SID)とは別に存在する 「整合性レベル(Integrity Level)」 という仕組みにあります。本記事では、この「信頼の格付け」について解説します。
1. 整合性レベル(Integrity Level: IL)とは?
整合性レベルとは、Windowsの強制整合性制御(MIC: Mandatory Integrity Control) という機能の一部です。
一言で言えば、「プロセス(プログラム)がどれだけ信頼されているか」 を示すスコアのようなものです。たとえ同じユーザーが実行していても、プロセスごとにこのレベルが異なります。
2. 主要な5つのレベル
Windowsには主に以下の5つのレベルが存在します。
| レベル | 名称 | 主な役割 |
|---|---|---|
| System | システム | OSのカーネルやサービス。最高権限。 |
| High | 高 | 管理者として実行されたプロセス。 |
| Medium | 中 | 標準ユーザーが実行する通常のアプリ(エクスプローラーなど)。 |
| Low | 低 | Webブラウザのタブ、サンドボックス化されたアプリ。 |
| Untrusted | 非信頼 | 匿名ログインなど、極限まで制限されたプロセス。 |
3. 鉄の掟:No-Write-Up(上位への書き込み禁止)
整合性レベルの最も重要なルールは、「低いレベルのプロセスは、高いレベルのオブジェクトを書き換えられない」 ということです。
- 読み取り: 低いレベルから高いレベルへの読み取りは許可されることが多い。
- 書き込み: 絶対に禁止。 LowのブラウザがMediumのシステム設定を書き換えることはできません。
これにより、ブラウザに脆弱性があって悪意のあるコードが実行されても、被害をそのサンドボックス内(Low IL)に閉じ込めることができます。
4. 自分のPCで確認してみよう
自分のPCで動いているソフトがどのレベルか、実際に見てみましょう。
タスクマネージャーで見る(GUI)
- 「詳細」タブを開く。
- 上部の見出し(名前やPIDなど)を右クリック。
- 「列の選択」 をクリック。
- リストから 「整合性」 を探し、チェックを入れてOKを押す。
コマンドで見る(CUI)
現在自分が使っているシェルのレベルを知りたい場合は、以下のコマンドを打ちます。
whoami /groups | findstr Label
procmonで特定のProcess 見る
例えば 'notepad.exe'の整合性
5. セキュリティ・ペネトレーションテストへの応用
サイバーセキュリティ(レッドチーミング)の文脈では、この「整合性レベル」をいかに突破するかが鍵となります。
-
UACバイパス: 攻撃者が
Mediumレベルの権限を手に入れた後、OSの機能を悪用してHigh(管理者)へ昇格させる手法。 -
サンドボックス回避:
LowレベルからMedium以上の権限を奪取し、システム全体へ干渉を広げる手法。
まとめ
整合性レベルは、現代のWindowsにおいて「ユーザー権限」と同じくらい重要なセキュリティの柱です。
- 開発者: 自分のアプリが適切なレベルで動いているか意識する。
- セキュリティ担当者: 攻撃者がどのレベルにいるかを確認し、防御を固める。
この「信頼の境界線」を理解することで、Windowsの防御の仕組みがより深く見えてくるはずです。
