IE8 セキュリティ パート I : DEP/NX メモリの保護

更新日: 2008 年 4 月 8 日


本記事は、Internet Explorer 開発チーム ブログ (英語) の翻訳記事です。本記事に含まれる情報は、Internet Explorer 開発チームブログ (英語) が作成された時点の内容であり、製品の仕様や動作内容を保証するものではありません。本記事に含まれる情報の利用については、使用条件をご参照ください。また、本記事掲載時点で、Internet Explorer 開発チーム ブログ (英語) の内容が変更されている場合があります。最新情報については、Internet Explorer 開発チームブログ (英語) をご参照ください。

翻訳元 : IE8 Security Part I: DEP/NX Memory Protection (英語)



Internet Explorer セキュリティ チームのエリック・ローレンスです。今週から、 RSA セキュリティ会議 (英語) が始まりましたので、 Internet Explorer 8 Beta 1 のセキュリティ機能と長所についてより多くの情報を共有していきたいと思います。これから数週間にわたって、 Beta 1 のセキュリティの改善点について詳細な情報をブログで報告する予定です。たとえば、新しいセーフティ フィルタ、 ActiveX コントロールの制御の改善、より安全なマッシュアップ (XDomainRequest と XDM) のための新しい AJAX 機能などについてです。さらに、以上の点だけが今回のリリースに関するセキュリティの改善点ではありません。今後のマイルストーンでは、他の話題についても取り上げる予定です。

Internet Explorer 8 のセキュリティ機能は、ソーシャル エンジニアリング、 Web サーバー、およびブラウザに基づく脆弱性という、セキュリティ違反の主要な 3 つの原因を対象としています。この投稿では、 IE8 データ実行防止 (DEP) について取り上げます。 DEP は、ブラウザに基づく脆弱性を軽減する機能です。

Internet Explorer 8 のDEP/NX メモリ保護

Windows Vista 上の Internet Explorer 7 では、既定ではオフのインターネット コントロール パネル オプションが [Enable memory protection to help mitigate online attacks ( メモリ保護を有効にし、オンライン攻撃の影響を軽減する)] に設定変更されました。このオプションは、データ実行防止 (DEP) (英語) または実行不可 (NX) とも呼ばれます。

また、Windows Server 2008 と Windows Vista SP1 以降の Internet Explorer 8 では、既定でこのオプションを有効にしました。

DEP/NX を使用すると、実行不可とマークされたコードがメモリ上で実行されることがなくなり、攻撃を阻止することができます。 DEP/NX と、アドレス空間レイアウトのランダム化 (ASLR) (英語) など、他のテクノロジを組み合わせることによって、バッファ オーバーランのような、ある種のメモリ関連の脆弱性を利用する攻撃が困難になります。何よりも重要な点は、この保護が Internet Explorer だけでなく、読み込まれるアドオンにも適用されることです。この保護機能を使用するには、特にユーザー操作は必要ありません。また、新しい確認メッセージも表示されません。

DEP/NX の互換性

Internet Explorer 7 では、DEP/NX は互換性の理由 (英語) から既定では無効となっていました。よく使われるアドオンの一部は DEP/NX と互換性がなく、DEP/NX を有効にして Internet Explorer を読み込むとクラッシュしてしまいます。最も多い問題としては、こうしたアドオンが古いバージョンの ATL ライブラリ を使用して構築されている点が挙げられます。 Version 7.1 SP1 より前のバージョンでは、 ATL は、 DEP/NX と互換性がない方法で、動的に生成されたコードに依存していました。よく使われる多数のアドオンの開発者は、 DEP/NX と互換性がある拡張を、リリース以来更新してきましたが、 Internet Explorer 8 のリリース前に更新されないアドオンも一部にはあります。

さいわいにも、新しい DEP/NX API (英語) が Windows Server 2008 と最近の Windows Service Pack に追加され、古い ATL バージョンとの互換性を保ったままで DEP/NX を使用できるようになりました。この新しい API を使用すると、古いバージョンの ATL を使用したアドオンがクラッシュすることなく、 DEP/NX 機能を有効にできます。

古い ATL を使っていたという理由以外でアドオンが DEP/NX に互換性がないというまれな場合には、クラッシュしたアドオンの更新バージョンを展開できるまで、グループ ポリシー オプションを使用して、組織で Internet Explorer の DEP/NX を禁止することができます。ローカルの管理者は、管理者権限でInternet Explorer を実行し、[ ツール] > [ インターネット オプション] > [ 詳細設定] > [Enable memory protection to help mitigate online attacks (オンラインからの攻撃の緩和に役立てるため、メモリ保護を有効にする)] オプションをオフにすることで DEP/NX を制御できます。

保護の確認

Windows Vista のタスク マネージャの [プロセス] タブでは、DEP/NX で保護されるプロセスを確認できます。以前のバージョンの Windows では、プロセス エクスプローラ (英語) を使用できます。

いずれの場合でも、[View ( 表示)] > [Select Columns ( 列の選択)] メニューの [Data Execution Prevention box (データ実行防止)] チェック ボックスを必ずオンにします。

開発者の実行要望

Internet Explorer のアドオンをビルドする場合、次の手順で実行することで、ユーザーは円滑に IE8 へアップグレードできるようになります。

  1. コードが古いバージョンの ATL に依存している場合、 ATL v7.1 SP1 以降でビルドし直します (Visual Studio 2005 には ATL 8.0 が含まれます ) 。
  2. /NXCompat リンカー オプションを設定することにより、作成する拡張が DEP/NX と互換性があることを示します。
  3. Windows Vista SP1 上で IE8 Beta 1 を使用して、 DEP/NX を有効にした状態でコードをテストします。 ( または、 DEP/NX オプションを有効にしてから、 Windows Vista 上の IE7 でテストします。 (IE7 で DEP/NX を有効にするには、管理者権限で IE を実行し、 [ツール] > [インターネット オプション] > [詳細設定] タブで対応するチェックボックスを設定します ) 。
  4. スタック保護 (/GS) 、安全な例外処理 (/SafeSEH)、および ASLR (/DynamicBase) など、他の利用できる保護策 (英語) をコードで有効にします。

Web のセキュリティ保護にご協力いただき、ありがとうございます。

Eric Lawrence
プログラム マネージャ

2008 年 4 月 8 日火曜日発行 (ieblog (英語) 上)

掲載場所 : General IE Information (英語)、Developers (英語)、Security (英語)

 

ページのトップへページのトップへ