米Intel社は2004年2月18日(米国時間),2004年後半からクライアント向けCPU製品にバッファ・オーバーフロー防止機構を盛り込むと発表した。Blasterのようなウイルスに対抗できる。名称は「No Execute(NX) memory protection」。米国サンフランシスコで開催中の開発者向け会議「Intel Developer Forum(IDF)Spring 2004」で明らかにした。対象CPUは明らかにしていないが,発表文に「HyperThreading技術と併せて」という表現があることからPrescottベースのPentium 4が対象と見られる。

 この機構はIntelの64ビット・プロセッサ「Itanium2」に搭載されているものと同じ。物理アドレスと論理アドレスを変換する「ページ・トランスレーション・テーブル」に新しいビット(NXビット)を追加してNXを実現する。CPUは命令を取り込むフェッチ動作の際,実アドレスからデータを取り出す。このときページ・トランスレーション・テーブルを使って論理アドレスから物理アドレスに変換する。その際にNXビットが有効になっている場合は,命令を読み込まず例外エラーを発生させる。
 
 一般にバッファ・オーバーフロー攻撃ではメモリー上のバッファ格納領域を溢れさせ,戻りアドレスなどが格納されているスタック領域を書き換える。うまく戻りアドレスを書き換えることができれば,このスタック領域のデータがCPUに読み込まれた際に任意の場所に書いてある命令を実行させることができる。一般には溢れさせたデータの中にプログラムを仕込むことで不正なプログラムを実行させる。従ってOSがスタック領域やバッファ領域にあるデータを確保する際,その領域のNXビットをオンにしておけば,スタック領域やバッファ領域にある埋め込まれたプログラムを実行するのを防止できる。

 実は同様の機構は米AMD社のAMD64アーキテクチャのCPUには搭載されている。AMDによれば「2004年第2四半期以降に配布されるWindows XP Service Pack 2でこの機能が有効になる」(Computation Products Group,Microprocessor Business Unit,Strategic MarketingのTim Wrightディレクタ)という。このことから,Intelの場合も同様に,Windows XPのService Pack2で利用可能になると推測される。

(中道 理=日経バイト)