[System Environment] | |||||||||||
XP SP2のデータ実行防止(DEP)機能を無効にする
|
|||||||||||
|
解説 |
Windows XP Service Pack 2(以下XP SP2)では、スタックやヒープ上に置かれたコードの実行を制限する、「データ実行防止(Data Execution Prevention。以下DEP)」という機能が新たに実装された。バッファ・オーバーフローとは、プログラムが想定しているよりも大量のデータを送り込んでスタックやヒープ上のデータ領域を書き換え、プログラムの制御を奪ったり、実行を停止させたりするという脆弱性である(基本的にはプログラムのバグが原因)。DEP機能を有効にすることにより、MS BlasterやSlammerなど、この脆弱性を使うウイルスやワームの実行を阻止することができる。詳細については関連記事を参照していただきたい。
|
DEP機能には、ソフトウェアDEPとハードウェアDEPの2種類があるが、ハードウェアDEP機能は現在のところ、AMD社のAthlon64(Opteron)など、特定のプロセッサでのみ利用できる。これに対して、ソフトウェアDEPはどのシステムでも利用できるが、その機能は非常に限定的である。将来はすべてのプロセッサおよびすべてのWindow OSで、いずれのDEPも利用できるようになる予定である。
ところでバッファ・オーバーフロー対策として有効なDEP機能であるが、場合によっては、正常なプログラムであってもDEP機能によって実行が中断させられてしまうことがある。プログラムによっては、わざとスタックやヒープ上にプログラム・コードを置き、それを実行している場合もあるが(主に性能向上のためにこのような技法が使われている)、DEP機能を有効にすると、このようなプログラムは不正なものとみなされてしまうことになる。今後出荷されるプログラムはDEP対応が施され、DEP環境下でも正しく動作するようになるだろう。だが以前から使用しているプログラムの場合は、DEPによって実行が阻止されないように、設定を変更する必要がある。
操作方法 |
DEPの設定を変更するには、2つの方法がある。特定のプログラムでのみDEPの除外設定を行うか、それともシステム全体でDEPを無効にするかである。
特定のプログラムに対するDEPの除外設定
特定のプログラムに対してDEP機能を無効にするには、上記の画面で[設定の変更]ボタンをクリックするか、DEPの設定画面で、除外するプログラムを手動で追加する。
[マイ コンピュータ]を右クリックしてポップアップ・メニューから[プロパティ]を選び、[詳細設定]タブにある[パフォーマンス]−[設定]をクリックすると、次のようなダイアログが表示される。
DEP機能の設定ダイアログ | |||||||||||||||
DEP機能をシステム全体で使うか、それとも特定のプログラムを除外するかを設定するダイアログ。 | |||||||||||||||
|
このダイアログで設定することにより、Windows OSシステムでのみDEP機能を利用するか、ユーザー・プログラムでもDEP機能を利用するかを設定することができる。
DEP機能をすべて無効にする設定
以上の設定では、DEP機能の適用範囲を変更することはできるが、DEP機能をすべて無効にすることはできない。OSカーネルのバッファ・オーバーフローの脆弱性に対する攻撃を防ぐためである。だが場合によっては、DEP機能を完全に無効にしたい場合もあるだろう。例えば古いバージョンのデバイス・ドライバを使っているような場合である。デバイス・ドライバはOSカーネルの一部として動作するため、デバイス・ドライバに対するDEP機能が有効になっていると、OSそのものが動作しなくなる。パフォーマンスを向上させるために、デバイス・ドライバでは、スタックやヒープ上に置いたコードを実行している場合があるが、XP SP2に対応するまでは、DEP機能全体を無効にしておく必要がある。
DEP機能そのものを無効にするには、システム・ドライブのルートにあるboot.iniファイル(通常はc:\boot.ini)に対して、「/NoExecute=AlwaysOff」というオプションを追加する。これ以外にも次のようなオプションがあり、何も指定がなければ、「/NoExecute=OptIn」と同じ扱いになっている。
設定 | 意味 |
/NoExecute=OptIn | デフォルト設定。Windows OSのシステム・ファイルでのみDEPが有効になる |
/NoExecute=OptOut | Windows OSのシステム・ファイルとユーザー・プログラムをDEPの対象とするが、除外リストに登録されたものについてはDEPを適用しない |
/NoExecute=AlwaysOn | Windows OSのシステム・ファイルとユーザー・プログラムをDEPの対象とする。除外リストにプログラムを登録することはできない |
/NoExecute=AlwaysOff | DEP機能をすべて無効にする |
boot.iniにおけるDEP設定 | |
各OSごとの設定行の最後に、これらのうちのいずれかのオプションを追加する。一番下を選択すると、DEP機能をすべて無効にすることができる。 |
関連記事 | ||
ネットワーク管理者のためのWindows XP SP2レビュー―データ実行保護機能(DEP)(Windows Server Insider) | ||
Windows XP SP2で採用されたDEPの仕組み(System Insider) | ||
Windows TIPS「システムのブート情報ファイルBOOT.INIを編集する」(Windows Server Insider) | ||
更新履歴 | |
|
「Windows TIPS」 |
- Azure Web Appsの中を「コンソール」や「シェル」でのぞいてみる (2017/7/27)
AzureのWeb Appsはどのような仕組みで動いているのか、オンプレミスのWindows OSと何が違うのか、などをちょっと探訪してみよう - Azure Storage ExplorerでStorageを手軽に操作する (2017/7/24)
エクスプローラのような感覚でAzure Storageにアクセスできる無償ツール「Azure Storage Explorer」。いざというときに使えるよう、事前にセットアップしておこう - Win 10でキーボード配列が誤認識された場合の対処 (2017/7/21)
キーボード配列が異なる言語に誤認識された場合の対処方法を紹介。英語キーボードが日本語配列として認識された場合などは、正しいキー配列に設定し直そう - Azure Web AppsでWordPressをインストールしてみる (2017/7/20)
これまでのIaaSに続き、Azureの大きな特徴といえるPaaSサービス、Azure App Serviceを試してみた! まずはWordPressをインストールしてみる
|
|