脆弱性が見つかっても、影響を最小限に抑える機能の実装も進んでいる。その1つが「データ実行防止(DEP(デップ))」だ。Part2で解説した、危険な脆弱性の代表例であるバッファーオーバーフローを悪用する攻撃を防ぐ。例えばWindowsでは、Windows XP SP2から実装されている。
Part2で説明したように、バッファーオーバーフロー攻撃では、データ領域に送り込んだウイルスを実行させる。本来、データ領域中のデータはプログラムに参照されるだけで、実行されることはない。だが、プログラムに脆弱性があると、データ領域に読み込ませたウイルスを、実行中のプログラムの一部だと誤解して実行してしまう。
そこでDEPでは、データ領域に「実行不能」マークを付ける(図6-1)。プログラムの処理がデータ領域に及んだ場合には、CPUは処理を中止する。このためデータ領域にウイルスを送り込まれても、実行を阻止できる。Visual Studio(ビジュアル スタジオ)などのプログラム開発ツールは、オプションを指定するだけで、プログラムにDEPを組み込めるようにしている。