Windows TIPS
| [System Environment] |
XP SP2のデータ実行防止(DEP)機能を無効にする
|
 |
| ■ |
XP SP2には、スタックやヒープ上に置かれたプログラムの実行を防止するDEP機能がある。DEP機能を利用すると、バッファ・オーバーフローの脆弱性を突いてコードを実行するウイルスやワームを防止することができる。 |
| ■ |
DEP機能は、Windows OSシステムに適用されるほか、ユーザー・プログラムに対して適用することもできる。 |
| ■ |
古いバージョンのプログラムやデバイス・ドライバなどでは、DEP機能によって実行できなくなる場合がある。そのような場合は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によってプログラムの実行が中断させられる。これはAMD Athlon64 CPUを使ったWindows XP SP2システム上での実行例。 |
| |
 |
スタック上でコードを実行するサンプル(具体的なプログラムについては先の関連記事を参照)。 |
| |
 |
実行しようとしたプログラムの名称。 |
| |
 |
DEP機能の設定を変更して、このプログラムをDEPによる実行中断から除外するには、これをクリックする。 |
| |
 |
DEP機能の設定を変更せず、以後も有効にしておくには、これをクリックしてダイアログを閉じる。 |
|
ところでバッファ・オーバーフロー対策として有効なDEP機能であるが、場合によっては、正常なプログラムであってもDEP機能によって実行が中断させられてしまうことがある。プログラムによっては、わざとスタックやヒープ上にプログラム・コードを置き、それを実行している場合もあるが(主に性能向上のためにこのような技法が使われている)、DEP機能を有効にすると、このようなプログラムは不正なものとみなされてしまうことになる。今後出荷されるプログラムはDEP対応が施され、DEP環境下でも正しく動作するようになるだろう。だが以前から使用しているプログラムの場合は、DEPによって実行が阻止されないように、設定を変更する必要がある。
DEPの設定を変更するには、2つの方法がある。特定のプログラムでのみDEPの除外設定を行うか、それともシステム全体でDEPを無効にするかである。
特定のプログラムに対するDEPの除外設定
特定のプログラムに対してDEP機能を無効にするには、上記の画面で[設定の変更]ボタンをクリックするか、DEPの設定画面で、除外するプログラムを手動で追加する。
[マイ コンピュータ]を右クリックしてポップアップ・メニューから[プロパティ]を選び、[詳細設定]タブにある[パフォーマンス]−[設定]をクリックすると、次のようなダイアログが表示される。
 |
| DEP機能の設定ダイアログ |
| DEP機能をシステム全体で使うか、それとも特定のプログラムを除外するかを設定するダイアログ。 |
| |
 |
DEP機能の設定タブ。 |
| |
 |
Windowsシステム(デバイス・ドライバも含む)でのみDEP機能を有効にする。XP SP2のデフォルト設定。 |
| |
 |
Windowsシステムだけでなく、ユーザーのプログラムも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 TIPS |
|
|
generated by
|
|
| 更新履歴 |
| 【2005/11/16】boot.iniファイルにおけるオプション値の記述が間違っておりました。当初公開した記事ではオプション値を「OptIn/OutOut/AlwayOn/AlwayOff」と記述しておりましたが、正しくは「OptIn/OptOut/AlwaysOn/AlwaysOff」でした。お詫びして訂正させていただきます。 |
|
TechTargetジャパン
Windows Server Insider フォーラム 新着記事
キャリアアップ

**先週の人気講座ランキング**
〜 Android編 〜