図3●Athlon 64搭載PCでDEPを有効にすると,物理アドレス拡張モードで起動する |
注意すべき点は,中には,物理アドレス拡張モードで起動しようとすると,起動に失敗するPCがあることだ。その場合は,物理アドレス拡張ではないモードに戻せば起動するようになるはずだが,図2の設定画面にあるオプションだと,どちらを選んでも物理アドレス拡張モードになってしまうので,対処できない。セーフ・モードで起動してから,c:\boot.iniに「/noexecute=AlwaysOff」オプションを指定する必要がある。
図4●Windows XP Service Pack 2で新設されたDEPのための設定画面 Celeronなど,AMD64以外のCPUを搭載したPCでService Pack 2を適用したWindows XPを動かしたときのものである。 |
「ハードウエアによるDEPが効かない」というくだりは正しいが,「DEPソフトウエアを使えば攻撃を阻止できる」というのに疑問が残る。「DEPソフトウエアはデフォルトでは無効だが,有効にすれば攻撃を阻止できる」とも解釈できる。だが,ソフトウエアによるDEP機能も,「/noexecute=AlwaysOff」にしない限り有効であるはずだ。さらに,Visual C++の「/GS」オプションによる処理は,Windows XP SP2に含まれる各実行ファイルに埋め込まれている。ハードウエアのDEPと異なり,ON/OFFの制御はできず,常にシステム・プログラムを対象とした「攻撃を阻止できる」はずだ。
なお製品版のWindows XP SP2では,AMD64以外のCPUを備えたPCでも「次に選択するものを除くすべてのプログラムおよびサービスについてDEPを有効にする」のオプションが選べる。
このオプションは,RC2ではグレーになって選べなかった。RC2時点ではソフトウエアDEPはVisual C++の「/GS」オプションによる処理を意味していたからだ。Visual C++の「/GS」オプションによる処理は,SP2で配布される実行ファイルにしか埋め込まれておらず,すべてのプログラムを対象にできない。製品版のWindows XP SP2では,ソフトウエアDEPが例外ハンドラの安全性をチェックする仕組みを意味するようになったので,すべてのプログラムを対象にできるようになったわけだ。
ただ残念ながら,ソフトウエアによるDEPが,どの程度の攻撃に耐えられるのかは調べられなかった。実際にバッファ・オーバーフロー攻撃などを仕掛けてみれば検証できそうだが,SP2を適用したWindows XPは,既知のバッファ・オーバーフローのぜい弱性が修正されている。未知のぜい弱性があったとしても,それを知るすべはない。つまり,一個人としては,検証する手段がないのである。
(山口 哲弘=日経Windowsプロ)