PaX
攻撃者は特定のライブラリが特定のアドレスにロードされていることを当てにしていることが多い。従って、この機能によってreturn-to-libc攻撃が困難となる。ただし、シェルコードを使った攻撃では GOT(global offset table)を参照することで任意の関数のアドレスを参照可能である。
PaX はライブラリのロード順序は変化させない。従って、1つのライブラリのアドレスがわかれば、他の全てのライブラリの位置もわかってしまう。しかし、もっと重大な問題として、いったんライブラリの位置がわかってしまうと、他のランダム化をしていても意味がないという問題がある(シェルコードはライブラリ内の関数のアドレスさえ分かれば攻撃可能)。
ET_DYN 型の実行ファイル(PIC化されたライブラリ)をロードするとき、そのベースアドレスもランダム化される(mmap() を使うので通常の共有オブジェクトと同じである)。
スタックを実行不可にする機能と mmap() のランダム化を組み合わせると、return-to-libc攻撃の成功確率は激減する。32ビットシステムでは、本来の確率の16分の1になる。さらにスタックベースのランダム化を加えると、もっと攻撃が困難になる。