DEPは、バッファーオーバーフローを悪用する攻撃を防ぐセキュリティ機能。Windowsなどが備える。Data Execution Preventionの略で、日本語では「データ実行防止」。Windowsでは、Windows XP SP2から実装されている。

 バッファーオーバーフローを悪用する攻撃では、データ領域に送り込んだウイルスを実行させる。本来、データ領域中のデータはプログラムに参照されるだけで、実行されることはない。

 だが、プログラムに脆弱性があると、データ領域に読み込ませたウイルスを、実行中のプログラムの一部だと誤解して実行してしまう。

 そこでDEPでは、データ領域に「実行不能」マークを付ける(図1)。プログラムの処理がデータ領域に及んだ場合には、CPUは処理を中止する。このためデータ領域にウイルスを送り込まれても、実行を阻止できる。

図1●バッファーオーバーフロー悪用攻撃を防ぐ「DEP(データ実行防止)」の仕組み
図1●バッファーオーバーフロー悪用攻撃を防ぐ「DEP(データ実行防止)」の仕組み
[画像のクリックで拡大表示]

 Visual Studioなどのプログラム開発ツールは、オプションを指定するだけで、プログラムにDEPを組み込めるようにしている。