まとめ 攻撃者は次の困難に直面する: 1. フレーム ポインタやリターン アドレスを上書きするために 32 ビットの数値を推測しなければならない 2. フラグやポインタがスタック フレームのバッファよりも下位にある 3. アドレス空間の書き込み可能領域がすべて実行不可領域に設定されている 4. signal()トランポリン コードが書き込み不可である 5. GOT、PLT、および dtor が書き込み不可である 6. 定数データが実行不可である 7. atexit() と stdio _cleanup ベクトルが書き込み不可である 8. 共有ライブラリが毎回異なるアドレスにマップされる 9. malloc() と mmap() により割り当てがランダム化される 10. malloc() と mmap() によりガード ページが配置される (未完成) 11. スタックの最上位がランダムに偏っている 12. 多くの特権付きデーモンやプログラムがその特権を放棄している 13. その他の特権付きデーモンやプログラムがその特権を別のプロセスに 分離している