プログラムは、スタック上のデータの読み取りと書き込みを行います。通常、それらはコード用に特別に指定されたメモリーの読み取り専用部分から実行されます。スタック上のバッファーをオーバーフローさせる一部の攻撃では、新しいコードをそのスタックに挿入し、プログラムにそれを実行させようとします。スタックメモリーから実行権を削除すると、これらの攻撃が成功するのを防ぐことができます。ほとんどのプログラムは、実行可能スタックを使用せずに正しく機能できます。
プログラムは、スタック実行を明示的にマークまたは防止することができます。プログラム内の mprotect() 関数は、スタックを実行可能として明示的にマークします。詳細は、mprotect(2) のマニュアルページを参照してください。
スタックが悪意のあるプログラムによって使用されないようにする方法については、Oracle Solaris 11.3 でのシステムおよび接続されたデバイスのセキュリティー保護 の悪影響からのプロセスヒープと実行可能スタックの保護を参照してください。
マウントされたファイルシステムにある実行可能ファイルによってシステムが侵害されないようにするには、mount コマンドに nosetuid 引数および noexec 引数を使用します。詳細は、mount(1M) のマニュアルページを参照してください。