第1回:Windows XP SP2で変わるセキュリティ機能(3/4 ページ)

» 2004年08月16日 12時30分 公開
[本田雅一,ITmedia]

バッファオーバーフローを抑止するAdvanced Virus Protection

 ウイルスやワームの一部には、他の実行ファイルを偽装して潜り込み、本来はプログラム実行領域ではない場所(データ領域)に隠してあるプログラムに制御を渡して機能しようとするものがある。こうしたウイルス/ワームは、未知の段階での発見が難しい。

 このようなウイルスやワームに対抗するため、マイクロソフトはCPUベンダーとともにNXビット(No eXecution :実行不可能)というビットを設けた。そしてNXビットに対応する機能がSP2に盛り込まれている。

 NXビットはメモリページ単位に設定されるビットで、SP2はこれを“デフォルトでオン”に設定する。つまり、初期状態ではどのメモリ領域も実行不可となる。そして実行可能なコードをロードするメモリページにのみ、OSがNXビットを無効にして実行を許可するのである。NXビットの書き換えはユーザープログラムからは行えないため、実行可能なメモリ領域をOSが厳密に管理できるようになるわけだ。

DEP 特定のメモリ空間以外でのプログラム実行を不可能にするAdvanced Virus Protection

 NXビットを用いる技術は、これまでNXのほか、DEP(Data Execution Protection)などの名前が使われてきた。しかしWindows XP SP2においては「Advanced Virus Protection」に統一されている。

 NXビットの立っている領域(スタック領域やヒープ領域など)に実行制御が渡されると例外処理に入り、例外処理が実装されていない場合はユーザーにデータ領域での実行が行われたことを知らせ、プログラムが強制終了される。実際にNXビットが利用可能な環境でテストを行ってみると、victimといった典型的なワームの進入が防げていることがよく分かる。

デモ victimワームをブロックしている

 ただし、ごく一部のプログラムには、自分自身でヒープ領域などにコードを動的に作り出し、そこに実行制御を渡す特殊なテクニック(非常に特殊で通常のアプリケーションではまずあり得ないが)を利用している場合がある。そのようなプログラムは、この機能によって動作しなくなる可能性があり、互換性への影響はゼロではない。

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ