Windows Vista のアクセス制御メカニズムと 保護モードの

Windows Vista の
アクセス制御メカニズムと
保護モードの Internet Explorer
マイクロソフト ディベロップメント株式会社
ウィンドウズ開発統括部
プログラム マネージャ
林 真二
スライド中の言葉について
略語
正式名称
IE
Internet Explorer
UAC
ユーザー アカウント制御
UIPI
ユーザー インターフェイス特権の分離
MIC
Mandatory Integrity Level
IL
整合性レベル
WRP
Windows リソース保護
言葉
該当リソースの例
管理者権限の領域
HKLM
%ProgramFiles%
%WinDir%
標準権限の領域
HKCU
%UserProfile%
2
はじ
めに
保護モードの IE とは?
目的
IE を介した悪意のある攻撃からシステムを保護
特徴
Windows Vista から有効
Windows Vista のアクセス制御メカニズムをフルに活用
低い整合性レベル (IL) で動作
保護モード有効時のみ有効な機能
ユーザー ブローカ
互換性レイヤ
3
はじ
めに
動作の異なる 3 つの IE!?
Windows Vista には、アクセス制御メカニズム
などの組み合わせで、保護モードを含め動作レ
ベルの異なる 3 つの IE が存在する
IE の種類
トークンの
フィルタ
(UAC)
ファイルと
レジストリ
の仮想化
(UAC)
管理者
ブローカ
IL と
UIPI
権限昇格した IE
フル
(管理者権限)
無効
無効
高
保護モード無効の IE
保護モード有効の IE
(既定)
保護
モード
ユーザー
ブローカ
(保護モー
ドの IE)
互換性
レイヤ
(保護モー
ドの IE)
無効
無効
無効
有効
有効
有効
中
フィルタ済み
(標準権限)
有効
有効
低
アクセス制御メカニズムの理解が不可欠
4
アジェンダ
Windows Vista のアクセス制御メカニズム
ユーザー アカウント制御 (UAC)
Windows リソース保護 (WRP)
Mandatory Integrity Control (MIC) と整合性レベル
(IL)
ユーザー インターフェイス特権の分離 (UIPI)
ブローカ プロセスによる上位権限タスクの実行
アクセス制御に関連した互換性機能
UAC のファイルとレジストリの仮想化
保護モードの IE の互換性レイヤ
保護モードの IE への対応
5
こんな疑問を解決します
Windows Vista で、管理者ユーザーで IE を使
っていると…
管理者ユーザーでも書き込みアクセスできないリソ
ースがある
標準権限のリソースでも書き込みアクセスできない
ことがある
他のプロセスとウィンドウ メッセージのやり取りができ
ないことがある
アドオンの設定情報など、ファイルが意図した場所
に作成されないことがある
6
「管理者ユーザーでも書き込みアクセスできないリソースがある…」
ユーザー アカウント制御 (UAC) に
よるアクセス制御
今まで…
ファイルやレジストリなどのオブジェクト
権限の確認
書き込み
管理者権限の領域
以前の Windows 上で動
作している IE やアドオン
など
ユーザー : 管理者
書き込み
標準権限の領域
8
管理者ユーザーでも書き込みアクセ
疑問
スできないリソースがある (ケース 1)
ファイルやレジストリなどのオブジェクト
権限の確認
書き込み
Windows Vista 上で動作
している IE やアドオンなど
ユーザー : 管理者
管理者権限の領域
書き込み
標準権限の領域
9
究明
UAC の「トークンのフィルタ」
トークン?
ユーザーや所属グループ、保持している特権などの情
報により、ユーザーの権限を表したもの
トークンのフィルタ
標準ユーザー以外のユーザーのトークンを、ログオン時
に「フィルタ済み (標準権限のみ)」と「フル (保持してい
る全権限)」に分割
既定では、管理者を含むすべてのユーザーはフィルタ
済みトークンで動作
標準ユーザーは通常通り標準権限で動作
権限昇格を行った場合にのみフル トークンで動作
ビルトインの Administrator (既定では無効) を除く
10
解決
つまり…
ファイルやレジストリなどのオブジェクト
権限の確認
書き込み
Windows Vista 上で動作
している IE やアドオンなど
ユーザー : 管理者
管理者権限の領域
書き込み
標準権限の領域
疑問 管理者権限でアクセスするには?
11
究明
UAC の「権限の昇格」
管理者権限が必要なアプリケーションやタスク
を実行する際は警告ダイアログを表示し、権限
の昇格を確認
IE の権限の昇格方法
コンテキスト メニューの
「管理者として実行…」
から起動
管理者ユーザーの場合、
許可を確認
標準ユーザーの場合、
管理者ユーザーの資格
情報を確認
12
究明 UAC の「トークンのフィルタ」と「権限
の昇格」の動作イメージ
2) トークンのフィルタ
フィルタ済み
トークン
(標準権限)
フル トークン
(管理者権限)
3.2) 権限昇格によりフル トー
クン (管理者権限) で実行
 HKLM や %WinDir%、
%ProgramFiles% への
書き込み
 日付の変更
 アプリケーションの
インストール
 デバイスの削除
 ドライバの変更
1) ログオン
3.1) フィルタ済みトーク
ン (標準権限) で実行
 %UserProfile% や HKCU
への書き込み
 タイムゾーンの変更
 メモ帳の実行
 プリンタのインストール
管理者ユーザー
13
解決
つまり…
ファイルやレジストリなどのオブジェクト
Windows Vista 上で動作し
ている IE やアドオンなど
ユーザー : 管理者
権限の確認
書き込み
権限昇格 (UAC)
書き込み
Windows Vista 上で動作
している IE やアドオンなど
ユーザー : 管理者
管理者権限の領域
書き込み
標準権限の領域
14
「管理者ユーザーでも書き込みアクセスできないリソースがある…」
Windows リソース保護 (WRP) に
よるアクセス制御
管理者ユーザーでも書き込みアクセ
疑問
スできないリソースがある (ケース 2)
ファイルやレジストリなどのオブジェクト
権限の確認
Windows Vista 上で動作
している IE やアドオンなど
ユーザー : 管理者
書き込み
書き込み
権限昇格 (UAC)
管理者権限の領域
標準権限の領域
16
究明 Windows リソース保護 (WRP)
Windows のシステム リソースをアクセス制御で保
護
保護対象はファイルやフォルダ、レジストリ キー
TrustedInstaller (Windows モジュール インストー
ラ サービス) にのみフル コントロール権限を許可
ビルトインの Administrator や管理者ユーザー、システ
ム アカウントでも既定では読み取りと実行権限のみ
17
解決
つまり…
ファイルやレジストリなどのオブジェクト
権限の確認
Windows Vista 上で動作
している IE やアドオンなど
ユーザー : 管理者
書き込み
WRP
書き込み
権限昇格 (UAC)
管理者権限の領域
標準権限の領域
18
「標準権限のリソースでも書き込みアクセスできないことがある…」
「他のプロセスとウィンドウ メッセージのやり取りができないことがある…」
整合性レベル (IL) による
アクセス制御
標準権限のリソースでも書き込
疑問
みアクセスできないものがある
ファイルやレジストリなどのオブジェクト
管理者権限の領域
権限の確認
Windows Vista 上で動
作している IE
ユーザー : 管理者
書き込み
書き込み
標準権限の領域
20
Mandatory
Integrity
Control
究明
(MIC)
プロセスやファイル、レジストリといったセキュリテ
ィ保護が可能なオブジェクトへのアクセスを、整
合性レベル (IL: Integrity Level) で制御するメ
カニズム
各オブジェクトへのアクセスは、3 つの整合性レ
ベル (IL) と 3 つのポリシーの組み合わせで管
理
ユーザーの権限より先に確認
権限があっても IL がないとアクセスできない
21
究明 MIC の整合性レベルとポリシー
整合性レベル
セキュリティ ID
IL
Mandatory Label\
High Mandatory Level
高
権限昇格したプロセスとごく一部のリソース
Mandatory Label\
Medium Mandatory Level
中
ほとんどのプロセスとリソース
Mandatory Label\
Low Mandatory Level
低
保護モードの IE と低 IL のプロセスでもアクセスで
きる信頼性の低い一部のリソース
該当オブジェクトの例
ポリシー
アクセス ポリシー
説明
NO_WRITE_UP
下位レベルからの書き込みを拒否
NO_READ_UP
下位レベルからの読み取りを拒否
NO_EXECUTE_UP
下位レベルからの実行を拒否
22
ユーザー
インターフェイス特権
補足
の分離 (UIPI)
目的
上位権限のプロセスを、デスクトップに共存する下
位権限のプロセスの攻撃から保護
ウィンドウ メッセージを介したシャッター アタック
悪意のある DLL の注入など
特徴
上位レベルのプロセスへのウィンドウ メッセージの送
信を制限
プロセスの権限は整合性レベル (IL) で管理
23
究明
MIC によるアクセス制御
プロセス (オブジェクト)
書き込みアクセスや
ウィンドウ メッセージの送信
オブジェクト
インストーラなど
権限昇格 (UAC)
高 IL
メモ帳など
中 IL
低 IL
24
解決
つまり…
ファイルやレジストリなどのオブジェクト
メモ帳
ユーザー : 管理者
権限 : 標準
標準権限の領域
整合性
書き込み
Windows Vista 上
で動作している IE
およびアドオン
ユーザー : 管理者
権限 : 標準
権限
(No_Write_Up)
書き込み
書き込み
25
アクセス制御メカニズムのまとめ
まとめ
保護モード : 無効
ユーザー : 管理者
トークン : フル (管理者権限)
IL : 高
権限昇格 (UAC)
管理者権限の領域
書き込みアクセスや
ウィンドウ メッセージ
の送信など
WRP
高 IL
中 IL
ユーザー : 管理者
トークン : フィルタ済み (標準権限)
保護モード : 無効
IL : 中
中 IL
保護モード : 有効
IL : 低
低 IL
標準権限の領域
27
上位権限のタスクを実行
IE のブローカ プロセス
ブローカ プロセス
権限が低い IE に代わって、上位権限が必要な
タスクを実行するプロセス (プログラム)
プロセス名
IEInstal.exe
IEUser.exe
IL
高
中
権限
タスクの例
管理者権限
ActiveX コントロールのインストー
ルなど、管理者権限領域への書
き込みが必要なタスク
標準権限
ユーザーの設定情報の変更や画
像・ファイルの保存など、標準権
限領域への書き込みが必要なタ
スク
29
ブローカ プロセスの動作イメージ
管理者権限の領域
管理者ブローカ
(IEInstal.exe)
ActiveX のインストール
権限昇格 (UAC)
保護モード無効の IE
設定の変更
ツールバーのインストール
ユーザー ブローカ 画像などファイルの保存
中 IL
(IEUser.exe)
保護モードの IE
低 IL
標準権限の領域
30
「アドオンの設定情報など、ファイルが意図した場所に作成されないことが
ある…」
アクセス制御に関連した互換性機能
ファイルが意図した場所に作
疑問
成されないことがある
管理者権限の領域
権限昇格 (UAC)
ファイルを保存
古いプログラム
(標準権限、中 IL)
中 IL
エクスプローラで探
しても見つからない
設定情報を保存
保護モードの IE に
読み込まれた
古いアドオン (低 IL)
低 IL
標準権限の領域
32
UAC
の「ファイルと
究明
レジストリの仮想化」
管理者権限領域への書き込みアクセスが権限不足で
失敗した場合、標準権限の領域へリダイレクト
管理者権限の領域
%ProgramFiles%
%ProgramData%
%WinDir%
HKLM\Software
リダイレクト後の標準権限の領域
%LocalAppData%\VirtualStore\Program Files
%LocalAppData%\VirtualStore\ProgramData
%LocalAppData%\VirtualStore\Windows
HKCU\Software\Classes\VirtualStore\Machine\Software
読み取りアクセス時は、仮想領域を先にチェック
適用条件
32 ビット プログラムである
対話型のプログラムである
Manifest により実行権限を指定していない
既存アプリケーション向けの一時的な互換性機能である
ため、依存しないことが重要
33
保護モードの
IE
の
究明
「互換性レイヤ」
アドオンなどによる、標準権限でかつ中 IL のリ
ソースへの書き込みを、低 IL の領域へリダイレ
クト
リダイレクト先
ファイル
レジストリ
%LocalAppData%\Microsoft\Windows
\Temporary Internet Files\Virtualized
HKCU\Software\Microsoft
\Internet Explorer\InternetRegistry
34
解決
つまり…
管理者権限の領域
権限昇格 (UAC)
ファイルを保存
ファイルと
レジストリの
仮想化 (UAC)
古いプログラム
(標準権限、中 IL)
保護モードの IE に
読み込まれた
古いアドオン (低 IL)
互換性レイヤ
中 IL
低 IL
設定情報を保存
標準権限の領域
35
保護モードの IE への対応
問題の切り分け
保護モードを無効にして問題が発生しなくなる
場合、保護モードの影響を受けている可能性が
高い
保護モードを無効にしても問題が発生し、権限
昇格すると問題が発生しなくなる場合、UAC の
影響を受けている可能性が高い
権限昇格しても問題が発生する場合、WRP の
影響や他の原因が考えられる
同じ IL のプロセス間で問題が無く、上位 IL の
プロセスとのやり取りに問題がある場合、UIPI の
影響を受けている可能性が高い
37
問題の回避
一時的な問題の回避であれば、コンテキスト メ
ニューの「管理者として実行…」から権限を昇格
セキュリティの観点から長期的な回避策にはならな
い
38
対応方法
権限や IL を考慮した適切なリソースを使用
ブローカ プロセスを作成し上位権限のタスクを
実行
低 IL から中 IL への権限昇格は、ダイアログなしで
行うことが可能
低 IL のフォルダやレジストリで情報を共有
%UserProfile%\AppData\LocalLow
%Temp%\Low
HKCU\Software\AppDataLow
信頼性の低い場所であることに注意
利用可能な API は Appendix で
39
一般的な問題と対応方法の例 1
書き込みアクセスで権限または IL が足りない
書き込む場所を変更する
書き込みを行うタスクをブローカ プロセスとして分離
する
UAC の仮想化により、他のユーザーと設定情
報を共有できない
仮想化の影響を受けないように書き込む場所を変
更する
書き込みを行うタスクをブローカ プロセスとして分離
する
40
一般的な問題と対応方法の例 2
保護モードの互換性レイヤにより、他のプロセスと
設定情報を共有できない
書き込みを行うタスクをブローカ プロセスとして分離す
る
互換性レイヤの影響を受けないように書き込む場所を
低 IL 領域に変更する
上位 IL のプロセスにウィンドウ メッセージを送信で
きない
上位 IL のプロセス側で、特定のメッセージを許可する
他の通信方法を使用する
ブローカ プロセスとして分離し uiAccess を有効にする
41
関連リソース
アプリケーションの互換性検証と対応のポイント
http://go.microsoft.com/fwlink/?LinkID=76812
UAC の詳細 (英語)
http://go.microsoft.com/fwlink/?LinkId=81232
保護モードの IE
(英語)
http://msdn.microsoft.com/library/default.asp?
url=/library/enus/IETechCol/dnwebgen/ProtectedMode.asp
(日本語)
http://www.microsoft.com/japan/msdn/ie/gene
ral/protectedmode.aspx
42
© 2007 Microsoft Corporation. All rights reserved.
This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Appendix
保護モードの IE で
利用可能な API の例
保護モードで動作しているかどうかの判別
IEIsProtectedModeProcess()
HKCU 下の書き込み可能なレジストリを取得
IEGetWriteableHKCU()
ユーザー ブローカを介した、低 IL から中 IL へ
のファイルの保存
低 IL へ一時ファイルを作成
IEShowSaveFileDialog() を呼び出し、保存先を指
定
引数に一時ファイルのパスを指定し、IESaveFile()
を呼び出す
45
UAC : 権限を昇格する方法
コンテキスト メニュー
の「管理者として実行」
アプリケーション互換性テクノロジを利用
[互換性] タブ
互換フィックス
アプリケーション マニフェストで実行権限を
指定
level=“requireAdministrator“
46
UAC : 互換性テクノロジを利用した権限昇格
[互換性] タブ
ユーザー向け
CompatAdmin ツールを使用した互換フィックスの適用
IT 管理者向け
利用可能な互換フィックス
RunAsUAC
RunAsHighest
RunAsAdmin
ElevateCreateProcess
親プロセスと同じ権限で動作
ユーザーが取得可能な権限で動作
管理者権限で動作
ERROR_ELEVATION_REQUIRED を処理
詳細
http://www.microsoft.com/technet/windowsvista/deploy/appcom
pat/acshims.mspx
47
UAC : アプリケーション マニフェスト
EXE の実行権限を定義
{ファイル名}.exe.manifest (XML ファイル) 内に記述
<requestedExecutionLevel level=“asInvoker" uiAccess="false"/>
level asInvoker
highestAvailable
requireAdministrator
uiAccess
false
true
親プロセスと同じ権限で動作
ユーザーが取得可能な権限で動作
管理者権限で動作
通常のアプリケーション
UIPI(※) の制限を回避 (アクセシビリティ ア
プリケーション向け)
添付方法
EXE と同じフォルダに配置
EXE と一緒にビルド
48
UAC : 対応のポイント
基本
マニフェストにより実行権限を明確に定義
OS の一時的な解決策に依存しない
標準権限で動作させることを優先
管理者権限が必要な場合、必要性を吟味した上で
、適切に権限の昇格を要求する
49
UAC : 標準権限への対応
Windows のリソースを適切に使用する
マシン全体のデータとユーザーごとのデータの保存先を
正しく区別
インストールはすべてのユーザーを対象に行う
権限の昇格により、インストールが別のユーザーとして
実行されている可能性がある
ユーザーごとの設定変更は各ユーザーの初回起動時
に行う
起動時にセルフ アップデートを行う場合は注意
標準権限で動作している場合、アップデートできない
MSI 3.1 以降に対応したインストーラを使用
UAC との高い連動性
標準権限でのアプリケーションの更新も可能
50
UAC : 権限の昇格への対応
管理者権限が必要な操作を分離することを優先
別プログラムとして分離する場合
マニフェストで管理者権限 (level=“requireAdministrator”) を定義
ShellExecute() で親プログラムから起動
サービスとして分離し、バックグラウンドで動作させる
COM オブジェクトとして分離する場合
CoCreateInstanceAsAdmin() のサンプルを例に、親プログラムから管理者権限
で起動
MSI を使用する
必要に応じて自動的に権限昇格ダイアログを表示
管理者タスクのみ行うプログラムの場合、マニフェストによりプログラム
自体を管理者権限として起動
管理者権限が必要な操作にはシールド アイコンを配置
ユーザーへ一貫性のある UI を提供
バイナリへの署名の追加
権限の昇格ダイアログと連動
帯の色を変更
ダイアログ上へ発行元を表示
51
UAC : OS コンポーネントの対応例
多くの Windows のタスクを再デザイン
標準権限での動作を優先
タイムゾーンの変更
電卓の表示設定の保持など
管理者権限が必要なタスク
のみ権限の昇格を要求
権限の昇格が必要なタスク
にはシールド画像を配置
全体 = 標準権限
管理者権限が
必要なタスク
例) 日付と時刻の設定
標準権限で実
行可能なタスク
全体 = 管理者権限
52
UIPI への対応
権限を昇格し、自身も上位権限になる
ダイアログ上で権限昇格の確認が必要
実行権限を昇格せずに、上位権限のプロセスと
やり取りする
マニフェストで以下を指定
level=“asInvoker”
uiAccess=“true”
プログラムをコード署名
%WinDir% または %ProgramFiles% からプログラ
ムを実行
53