4.12 DEP/NX の既定値 Windows 7 Only

4. 新機能や機能変更に伴う互換性問題

この章では、以下のような新機能や機能変更に伴う、互換性問題について紹介します。

DEP/NX とは

DEP/NX は、データ実行防止 (DEP) または実行不可 (NX) とも呼ばれ、実行不可とマークされたコードがメモリ上で実行されないようにします。そのため、バッファ オーバーランのようなメモリ関連の脆弱性を利用する攻撃を阻止することができます。この機能は、Internet Explorer の [ツール]-[インターネットオプション] を使用して、有効/無効を切り替えることができます。

図 4-48: メモリ保護の有効

図 4-48: メモリ保護の有効

このオプション自体は Internet Explorer 7 にも存在しましたが、互換性を配慮し、既定では無効になっていました。それが Internet Explorer 8 では、既定で有効に変更されました。

ページのトップへ


発生する互換性問題

DEP/NX は、Internet Explorer だけでなく、読み込まれるアドオンにも適用されます。そのため、この機能を有効にすると、DEP/NX と互換性のないアドオンは IE8 で読み込むだけでクラッシュします。最も多い問題としては、古いバージョンの ATL ライブラリ (Version 7.1 SP1 より前のバージョン) で構築されたアドオンです。

なお、タスク マネージャーの [プロセス] タブでは、DEP/NX で保護されるプロセスを確認することができます。

図 4-49: タスクマネージャーによるデータ実行防止確認

図 4-49: タスクマネージャーによるデータ実行防止確認

「データ実行防止」列は、既定では表示されません。表示するためには、タスクマネージャーの [表示] メニューから、[列の選択] で [データ実行防止] チェックボックスをオンにします。

ページのトップへ


問題の回避

クラッシュしたアドオンの更新バージョンを展開できるまで、DEP/NX を無効にします。この設定は、管理者として IE8 を実行する必要があります。

ページのトップへ


問題の解決

  • エンドユーザー向け

    DEP/NX と互換性のある最新バージョンのアドオンをインストールします。

  • 開発者向け

    DEP/NX と互換性のあるアプリケーションとしてコンパイルします。そのためには、以下の機能を活用することができます。

    • /NXCOMPAT リンカ オプションを使用して、DEP/NX 互換性を指定します。
    • スタック保護 (/GS)、安全な例外処理 (/SafeSEH)、および ASLR (/DynamicBase) など、利用できる他の保護策をコードで有効にします。

ページのトップへ