説を聞いたことがあります。アドレス空間の場所のランダム化は、ライブラリを取得し、仮想アドレス空間のランダム化された場所にロードするため、ハッカーがプログラムに穴を見つけた場合でも、return-to-libc 攻撃を実行するための既知のアドレスを持っていません。たとえば反対。しかし、数秒間考えてみると、防御策としては意味がありません。
仮想の TargetLib (libc またはハッカーが探しているその他のもの) が、決定論的なアドレスではなく、ランダム化されたアドレスにロードされているとしましょう。ハッカーは、TargetLib とその中のルーチンがどこにあるかを事前に知りませんが、アプリケーション コードも知りません。TargetLib 内のルーチンを見つけるために、バイナリのどこかにある種のルックアップ テーブルが必要であり、それは決定論的な場所にある必要があります。(または、他の何かによって指されているランダムな場所。必要な数の間接参照を追加できますが、最終的には既知の場所から開始する必要があります。)
これは、攻撃コードを TargetLib の既知の場所に向ける代わりに、ハッカーが行う必要があるのは、アプリケーションのルックアップ テーブルの TargetLib のエントリに攻撃コードを向け、そのポインターをターゲット ルーチンへ逆参照することだけであり、攻撃は妨げられずに進行することを意味します。
ASLR の仕組みについて理解できないことはありますか? 説明したように、セキュリティのイメージを提供するだけで実際の内容を提供するスピード バンプ以上のものであることがわかりません。何か不足していますか?