実行保護

実行保護（じっこうほご、ESP:Executable space protection）とは、意図しないコードの実行を阻止するためのコンピュータセキュリティ上の機能の1つ。

概要 
今日では、メモリの領域に実行不可とマークすることにより、その領域上でコードを実行しようとすると例外を発生させる仕組みが導入されている。

従来のCPUのメモリ保護機能でも、そのような機能は（主に読み書き保護について）提供されていたが、セグメント方式、すなわちセグメント単位の保護であった。オペレーティングシステムで採用されるメモリモデルによっては、これらの機能を有効に活用できず、バッファオーバーランなどの問題が生じていた。

また、CPUに実行保護のための機能を装備しない場合でも、オペレーティングシステムやセキュリティソフトウェア等が実行保護のための仕組みを提供する場合がある（これはしばしばエミュレーションに分類されるが、正確にはエミュレーションでない場合もある。例：ソフトウェアDEP）。

実装例 
しばしばNXビットのようなハードウェア機能を利用する。NXビットは、AMDのAMD64シリーズのCPUに装備される。インテルのCPU（Pentium 4のPrescottコア以降）のXDビット(eXecute Disable, EDB:Execute Disable Bit)も同等の機能である。SunのSPARC、Alpha、IBMのPowerPCそしてIntelのIA-64（Itanium/Merced)の一部にも同等の機能がある。

Linuxでの実装はPaXやExec Shield、OpenBSDでは:en:W^Xや:en:Openwall等がある。

Windowsでの実装はデータ実行防止 (DEP) がある。DEPにはハードウェアDEPとソフトウェアDEPがあり、ハードウェアDEPではNXビット機能により、データバッファ内にあるコードの実行を禁止する。ソフトウェアDEPでは、名前は似ているがそのような機能（バッファオーバーランからの保護）はなく、代りに特定の攻撃（構造化例外ハンドラ上書き）から保護する。

従来のアプリケーションやオペレーティングシステムとの互換性、保護範囲（アプリケーション全般までか、オペレーティングシステムの一部機能のみか等）、種々の攻撃に対する脆弱性は、各々の実装によって異なる。

関連項目 
 バッファオーバーラン
 NXビット
 printf の書式文字列攻撃

コンピュータセキュリティ
オペレーティングシステムの仕組み