ア | イ | ウ | エ | オ |
カ | キ | ク | ケ | コ |
サ | シ | ス | セ | ソ |
タ | チ | ツ | テ | ト |
ナ | ニ | ヌ | ネ | ノ |
ハ | ヒ | フ | ヘ | ホ |
マ | ミ | ム | メ | モ |
ヤ | ユ | ヨ | ||
ラ | リ | ル | レ | ロ |
ワ | ヰ | ヴ | ヱ | ヲ |
ン |
A | B | C | D | E |
F | G | H | I | J |
K | L | M | N | O |
P | Q | R | S | T |
U | V | W | X | Y |
Z | 数字 | 記号 |
x86系マイクロプロセッサーが持つメモリー保護機能の一つ。XDビット(エグゼキュート・ディスエーブル・ビット、Execute Disable Bit)ともいう。
NXビット機能は、「実行禁止」とマーキングされたメモリー領域からの実行を禁止するための機能である。
そもそもバッファーオーバフロー脆弱性を利用した攻撃は、その機構から、悪意のあるコードはスタック領域などに置かれることになる。しかし、本来スタックはプログラムが置かれる場所ではない。
結論として、スタック領域にあるコードを実行不可に出来れば、ウイルスやワームのたぐいは実行できなくなる、という単純な理屈による。
PAE(Physical Address Extension、物理アドレス拡張)とは、物理メモリーのアドレッシングに使用できるビット数を、32ビットから36ビットに拡張する機能である。一般的なWindowsではこの機能は使われておらず、Windows Server 2003などで対応している。
このPAEはページングテーブルと呼ばれるテーブルを持っており、NXビットは、このテーブルの情報を拡張するという形で実装された。
PAEで使われる各ページは4Kiバイトであり、つまりNXビットは4Kiバイト単位で設定できる。
新しい機能であるため、OSレベルで対応していなければNX機能は利用できない。
代表的なところでは、次のOSが対応する。
なお、WindowsではNXビットへの対応を、データ実行防止(DEP)機能と呼んでいる。
副作用として、意図的にバッファー領域に実行コードを格納したり、自己書き換えを利用するプログラムがその保護機能のため動作しなくなるという問題がある。
近年のメモリー保護機能のあるOSではユーザープログラムがコード領域のメモリーを書き換えることができないため、このテクニックを利用することはできないが、古いプログラムを利用する場合はNXビット機能を利用する前によく検証を取らなければならないと考えられる。
コメントなどを投稿するフォームは、日本語対応時のみ表示されます