IE10 & IE11 : 拡張保護モードの実態


こんにちは、日本 Internete Explorer サポートチームの厳 (ゲン) です。

今回のブログでは、拡張保護モードについて紹介します。

 

そもそも拡張保護モードはなぜ必要ですか?

 

拡張保護モードの登場は、日々進化したインターネット ビジネスと日々深刻なってくるセキュリティ保護の重要性と深い関係があります。

Windows XP / 2003 以前の OS はログインしたユーザーが起動したプロセスなら、プロセス内にそのユーザーの権限をフルに使えます。Windows XP で管理者権限でログインして、インターネット サーフィンをするときどうなるかを想像してみたことがありますか?IE を立ち上げて、管理者権限で iexplore.exe が起動されて、その中で Web ページが動いています。ページ内の ActiveX コントロールなどの実行を許可してしまうと、管理者権限なのでなんでもできちゃうんです。

そこで Windows Vista 以後に、OS レベルでプロセス整合性レベルという新機能が登場しました。これでユーザーの権限を一部だけ許可するようにできるようになり、IE は危険性が高いサイトを整合性レベルが低いプロセスで動かすことで、セキュリティを保護できるようになったのは 「保護モード」です。

更に Windows 8 で Windows Store アプリケーションが登場することにより、同じく整合性レベルが低いプロセスでも、更なる厳しい権限制限やデーターアクセスの分離の必要性のために、 AppContainer というさらに低い整合性レベルが追加されました。IE はこの整合性レベルで動作するのは「拡張保護モード」です。

以下に IE10、IE11 はどう拡張保護モードを対応しているのかを詳しく紹介していきます。

 

拡張保護モードの前に、そもそも保護モードとは?

 

保護モードが最初に登場したのは Windows Vista の IE7 です。インターネット オプションで各ゾーンのセキュリティ設定で [保護モードを有効にする] とのオプションが追加されました。

 図1: 保護モードを設定する箇所

 

保護モードの既定値:

インターネット ローカル イントラネット 信頼済み サイト 制限付き サイト
IE7 有効 有効 無効 有効
IE8以後 有効 無効 無効 有効

 

 

 

* Windows XP/Windows Server 2003 上の IE7/IE8 には設定項目はありません。保護モード未対応です。

 

保護モードの本質:  

保護モードは OS のプロセス整合性モデル (Integrity Level 以下 IL) を利用した セキュリティを強化するための機能です。

IL とは簡単に言うと、OS 上のプロセスを [高] (High) – [中] (Medium) – [低](Low)  の三段階でレベル付けし、レベルが高ければ高いほど OS での読み込み・書き込み権限が強い、低ければ低いほど権限が弱いという仕組みです。

IE は保護モードが有効のサイトを表示する際時は IL が [低] の IE プロセスで処理します。保護モードが無効のサイトは IL が [中] のプロセストで処理します。こうして、インターネット上のサイトを権限の低いプロセスでホストして、仮にサイト内に OS への意図しない箇所への書き込み、読み込み処理が実装されていても、操作は権限制限によって失敗するので、悪意のサイトから OS のデーターを保護できます。

ちなみに、プロセスがどの IL で動作しているのか、Process Explorer ツールで確認できます。

 図2: Process Monitor ログからプロセス整合性レベルを確認します。

保護モードが効かないパターン

この IL という仕組みはユーザーアクセス制御 (UAC) が有効の OS でしか対応できませんので、以下のシナリオで起動した IE は IL=Low になりませんので、保護モードは実質無効です

  • OS の UAC 機能を無効に設定している場合 (IL=High )
  • ビルトインの管理者 (ユーザー名: Administrator) でログオンした場合(IL=High )
  • IE を右クリックして [管理者として起動] で起動する場合。(IL=High )
  • IE の LCIE プロセスモデルを無効 ( TabProcGrowth=0 ) にした場合 (IL=Medium)
  • Windows XP / Windows Server 2003 上の IE7 / IE8 (IL を対応しない)

 

拡張保護モード

Windows 8 以後 [低] よりも権限が制限された IL レベル:  AppContainer を追加しました。この AppContainer は Windows ストア アプリ (Windows 8 でタイル状のアイコンから起動するアプリケーション) が動作するセキュリティ基盤となります。Windows 8 上の IE10 ももちろんこの AppContainer で動作できるために [拡張保護モード] を登場させました。

拡張保護モードの設定箇所:

モダン UI の IE (タイル アイコンから起動する IE) は常に拡張保護モードが有効です。設定を変更する項目はありません。

デスクトップの IE は、拡張保護モードはインターネット オプションの [詳細設定] タグで一箇所で設定します。

  図3: Windows 8 の IE10 で見る拡張保護モードの設定画面

 図4: Windows 8.1 (64bit) の IE11 で見る設定画面

図面に示されるように、64bit OS の IE11 は [拡張保護モードで 64 ビット プロセッサを有効にする] という項目が追加されています。これは拡張保護モードが有効の場合、IE のコンテンツプロセスを 64 bit にするかどうかを設定する項目です。

この項目は IE10 で設けていない理由は、IE10 は拡張保護モードを有効になると、必ずコンテンツ プロセスを 32bit -> 64bit に変更しているからです。IE11 では拡張保護モード状態のプロセスビット数ををユーザーが選択できるようにするため、この項目を追加しました。

この拡張保護モードとビット数の関係は煩わしいのですが、拡張保護モードの既定値の由来を理解するのにとっても重要です。詳しくは後述の [拡張保護モードとプロセス ビット数] で説明します。

 

拡張保護モードの本質

拡張保護モードが有効の場合、保護モードが有効のサイトは、IL が [Low] よりも低い [AppContainer] のプロセスで表示されます。保護モードが無効のサイトは、引き続き IL が [Medium] のプロセスで表示されますので、影響を受けません。

AppContainer でページをホストする際にはページ上の ActiveX コントロールもこの AppContainer 内で動作できるようにデザインされていない限り、動作できません。現行の殆どの ActiveX コントロールは対応できていない状況から、拡張保護モードが有効だとページに ActiveX コントロールが含まれますと殆ど動作できません。(ちなみに Flash は AppContainer でも動作できます) 。

このような場合、IE はサイトの下部に警告を表示して、ユーザーが [許可] を選択すると、このサイトを Low で開き直します。

 図5: 拡張保護モードで ActiveX コントロールが動作しない警告メッセージ

もちろんほかにも Appcontainer による Cookie の分離や、ファイル I/O の制限など、さまざまのセキュリティ上の強化効果がありますが、詳細はまた今度にして、本ブログは各 IE バージョンが拡張保護モードへの対応の実態にフォーカスします。

 

拡張保護モードとプロセス ビット数

まずは AppContainer 対応可能な OS (Windows 8 以後) の IE のプロセスモデルを見てみましょう。

64bit OS ならこう:

図6: 64bit OS の IE10 / IE11 プロセスモデル (Windows 8 以後)

32bit OS なら、64bit プロセスを作れないので、 [拡張保護モードで 64 ビット プロセッサを有効にする] という項目はありません。こうなります

 


図7: 32bit OS の IE10 / IE11 プロセスモデル (Windows 8 以後)

次に、Appcontainer を対応しない OS (Windows 7 / 2008R2) はどうなるか?「Windows XP が IL を対応できないので保護モードの項目自体がない」と同じように、「Windows 7 も Appcontainer を対応しないなら、拡張保護モードの項目も設ける必要はない」とおもいますよね?答えは、いいえ、64bit の Windows 7 / 2008R2 [拡張保護モードを有効にする] 項目を設けています。その理由は、IE10 を設計当時、拡張保護モードが ON になると、IE プロセスが 32bit ->  64bit に自動的に切り替わるようにデザインしているため、 64bit の Windows 7 / 2008 R2 では AppContainer を提供できないものの、32bit ->  64 bit にプロセスを切り替えることができるからです。

64bit の Windows 7/2008R2 で [拡張保護モードを有効にする] が ON にすると、コンテンツ プロセスのビット数は 32bit から 64bit に切り替わるだけで、IL は Low のままです。現行のほどんど古い ActiveX コントロールは 32bit で作られているので、64bit のプロセスに切り替えるだけでも、間接的に ActiveX コントロールを動作させないという効果があります。なお、この設計は Windows 7 上の IE11 にも踏襲しています。

つまり、こんな感じです。

図8: 64bit OS の IE10 / IE11 プロセスモデル (Windows 7/2008R2)

じゃ、32bit の Windows 7 / Windows Server 2008 R2 はどうなる?  64bit <-> 32bit の切り替えすらできないですよね。そうなんです。項目があっても ON・OFF には何も変わりようがないので、32bit の Windows 7 / Windows Server 2008 R2 では拡張保護モードの設定項目がなく、拡張保護機能を対応しません。

 

拡張保護モードの既定値

現行拡張保護モードを対応する全 OS ・全 IE バージョンの既定値、および拡張保護モードの ON/OFF の違テーブルに纏めてみました。拡張保護モードの ON・OFF により変化する部分をハイライトしています。

これだけを見ると確かに煩わしいですよね。:-) 図6,7,8と比較しながら見ていただけると分かりやすいと思います。

 

項目1: [拡張保護モードを有効

にする] 既定値

項目2: [拡張保護モードで 64 ビット

プロセッサを有効にする] 既定値

 拡張保護モードを無効のとき

IE のコンテンツ プロセスはどうなる?

 拡張保護モードを有効のとき

IE のコンテンツ プロセスはどうなる?

 IE11 on Windows 8.1(x86)  OFF(※補足あり)  N/A (項目なし)  32bit Low  32bit AppContainer
 IE11 on Windows 8.1(x64) / Windows Server 2012 R2 (x64)  OFF(※補足あり)  OFF 項目2 が ON  : 64bit Low

項目2 が OFF: 32bit Low

項目2 が ON  : 64bit AppContainer

項目2 が OFF: 32bit AppContainer

 IE11 on Windows 7 (x86)  N/A (項目なし)  N/A (項目なし)  N/A (Non-Support)  N/A (Non-Support)
 IE11 on Windows 7 (x64) / Windows Server 2008 R2 (x64)  OFF  N/A (項目なし)  32bit Low  64bit Low
 IE10 on Windows 8 (x86)  OFF  N/A (項目なし)  32bit Low  32bit AppContainer
 IE10 on Windows 8 (x64) / Windows Server 2012 (x64)  OFF  N/A (項目なし)  32bit Low  64bit AppContainer
 IE10 on Windows 7 (x86)  N/A (項目なし)  N/A (項目なし)  N/A (Non-Support)  N/A (Non-Support)
 IE10 on Windows 7 (x64) / Windows Server 2008 R2 (x64)  OFF  N/A (項目なし)  32bit Low  64bit Low

* IE11 on Windows 8 は存在しません。IE11 は Windows 8.1/2012R2 または Windows 7/2008R2 にしか作っていません。

* Windows Server 2012 x86、Windows Server 2008 x86 は存在しません。Windows 2008 以後のサーバー OS は 64bit しか作っていません。

 

(※補足)

IE11 リリース当初は、 [拡張保護モードを有効にする] 既定値が ON の状態でリリースされていました。その後各方面からのフィードバックを受け、日本時間の 2013 年 11 月 13 日 (米国時間の 2013 年 11 月 12 日)、IE11における拡張保護モードの既定値を”オフ”にするセキュリティ更新プログラムがリリースされました。この更新プログラムを適用された後に、既定値は OFF になります。

◇マイクロソフト セキュリティ情報 MS13-088 – 緊急

Internet Explorer 用の累積的なセキュリティ更新プログラム (2888505)

http://technet.microsoft.com/ja-jp/security/bulletin/ms13-088

 

拡張保護モードが効かないパターン

保護モードが効かない時は、拡張保護モードも効きません。なので、 前述の 「保護モードが効かないパターン」をご参照ください

もちろん Windows 7/ 2008 R2 環境下の拡張保護モードは本物の「拡張保護」ではない (Bit 数が変わるだけ) のも念頭に入れてください。

 

それては、ちょっと話が長くなりましたが、最後に少し参考情報をご紹介して、終わりにします。また次回お会いしましょう。

 

Understanding Enhanced Protected Mode

http://blogs.msdn.com/b/ieinternals/archive/2012/03/23/understanding-ie10-enhanced-protected-mode-network-security-addons-cookies-metro-desktop.aspx

拡張保護モード

http://blogs.msdn.com/b/ie_ja/archive/2012/03/21/enhanced-protected-mode.aspx

 

保護モードの Internet Explorer の理解と機能

http://msdn.microsoft.com/ja-jp/library/bb250462(v=vs.85).aspx

 

 

Comments (0)