PR

 BlasterやSasserなど,ネットワークに接続しただけで感染してしまうコンピュータ・ウイルスがある。そのようなウイルスは,バッファ・オーバーフローと呼ぶプログラムの欠陥を突いて攻撃する。データ実行防止は,このような攻撃を防止するため,Windows XP Service Pack 2(SP2)に初めて実装された機能である。Windows Server 2003 SP1にも実装される。

 データ実行防止は,その英文の頭文字を取って,「DEP」とも呼ばれる。DEPには,ハードウエアによるものと,ソフトウエアによるものの,大きく分けて2種類がある。ハードウエアDEPは,Athlon 64,同FX,OpteronといったAMD64対応のAMD製CPUや,プロセッサ・ナンバーの末尾に「J」が付いたCeleronやPentium 4などのIntel製CPUを採用したPCで利用できる。上記AMD製CPUが備える拡張ウイルス防止機能や上記Intel製CPUが備えるExecute Disable Bit機能を活用しており,Pentium IIIなど対応していないCPUのPCでは効かない。なお,TransmetaやVIA Technologiesも,対応CPUを出荷する予定である。それに対してソフトウエアDEPは,すべてのPCで利用可能だ。

 ハードウエアDEPは,あらかじめメモリーに対してプログラム領域またはデータ領域といった目印を付けておき,データ領域でプログラムが実行されようとしたときに例外(実行時エラー)を発生して,そのプログラムを強制的に止める機能である。

 バッファ・オーバーフローを利用した攻撃の仕組みは次の通りである。まずプログラムは,プログラム内で利用する変数をデータ領域に取る。そこに外部からデータを取得する処理を実行するときに,不正なプログラムを含んだ大量のデータを外部から送りつける。これによって,データに潜り込ませたプログラムを実行させ,管理者権限などを奪取する。

 つまり,バッファ・オーバーフロー攻撃は,データ領域に送り込んだ不正プログラムを動かすことで成り立つ。そのため,データ領域でのプログラム実行を阻止すれば,バッファ・オーバーフロー攻撃を防止できる。

 一方のソフトウエアDEPは,プログラムが備えている例外ハンドラが安全であることを確認する機能だ。この処理は,すべてのバッファ・オーバーフロー攻撃を防げるわけではないが,一部のコンピュータ・ウイルスが自分自身のカモフラージュのために使っている攻撃方法に対しても効果がある。