特定のメモリー領域から命令を実行できないようにするLinuxの機能。不正侵入を行う手段の1つである,バッファ・オーバーフロ-攻撃に対して有効な防御機能である。

 バッファ・オーバーフロー攻撃では,ぜい弱性を持ったプログラムに対して,メモリー領域上のデータ領域に不正な命令コードを送り込み,それを実行することで侵入を試みる。Exec-Shieldは,Linuxカーネルがデータ領域を監視して,不正な命令コードが実行されようとすると,エラー・メッセージを画面に出力して,処理を止める。

 Linuxは,Exec-Shieldのほかに,CPUが持つ「NXビット」を利用して同じような効果を得る機能も持つ。この機能では,Linuxカーネルの代わりに,NXビットを備えたCPUがメモリー領域を実行権限を監視する。このNXビットを利用した防御機能は,Windowsに備わっており,「DEP」と呼ばれる。Exec-Shieldは,NXビット非対応のCPUでも動作するが,DEPはNXビットに非対応のCPUでは動作しない

 Exec-Shieldの設定は,/proc/sys/kernel/exec-shieldファイルで行う。バージョン5以降のFedora Coreの場合,

0:無効
1:有効
2:有効かつスタック領域上命令コードの実行も不可

となっている。デフォルトは「1」。

 Fedora Core 2以前では,Exec-Shieldの機能として,メモリー領域に格納される命令や文字配列のアドレスをランダム化する「ASLR」(Address Space Layout Randomization,詳しくはLinuxキーワードASLRを参照)も含んでいた。設定は,/proc/sys/kernel/exec-shield-randomizeファイルで行い,「0」が無効,「1」なら有効となっていた。

 ASLRは,Fedora Core 3以降では,Exec-Shieldとは別の機能として提供されている。設定ファイルは/proc/sys/kernel/randomize_va_spaceに変更されているが,設定方法はexec-shield-randomizeと同じである。