Return-to-libc攻撃
スタックに実行コードを書き込むようなバッファオーバーランを利用した攻撃の場合と異なり、NXビットでスタック上のコード実行を防御しても、return-to-libc攻撃ではスタック上のコードを実行するわけではないので、防ぐことができない。Stack smashing protection は、スタック内容の破壊を検出したり、可能であれば破壊されたセグメントを復旧することで、この種の攻撃を防御できる。
ASLR (Address Space Layout Randomization) は、実行プログラムの各モジュールのコードが配置される位置をランダム化することで、狙い撃ちでコードを実行されることを防ぐ。ASLRは、特に64ビットシステム上での攻撃成功確率を劇的に低下させる。32ビットシステムでは、一般的には16ビット分のランダム化しか提供しないため(すなわち65536通り)、総当たり攻撃により分単位で攻撃を成功されてしまう可能性がある。