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
© Copyright 2024 ExpyDoc