web-dev-qa-db-ja.com

Linux ASLRが弱いのはなぜですか?

ウィキペディアによると、Linuxカーネルにはデフォルトで ASLRの弱い形式 があり、PaXまたはExec Shieldパッチを追加するだけで完全なASLRが有効になります。

LinuxカーネルのデフォルトASLRの弱点は何ですか?最近のバージョンで修正/改善されましたか?そうでない場合、メインラインカーネルが完全な実装を提供しないことを選択する理由はありますか?

4
Chandra Sekar

ウィキペディアの記事は続きます:

これにより、スタックベースが8 MBの領域に配置され、524,288の可能な位置が含まれます。また、256の可能な位置を含む1 MB幅の領域のmmapベース。

後者は小さすぎて効果的ではなく、攻撃者はmmap()アドレスポインターを見つけるために1つのセグメント内の256アドレスをプローブするだけで済みます。

この記事で触れていないのは、LinuxでのASLRの限定的な使用です。従来、2.6カーネルは、特定のメモリ領域(PIEコンパイル時)で(ネットワーク)プロセスにのみASLRを使用し、VDSOを固定アドレスにロードしていました。このような測定は、アドレスがallランダム化されている場合にのみ有効です。新しいカーネルでは、アドレスのランダム化のサポートが向上しています。さまざまなWindowsバージョンがまったく同じことをしたことに注意してください。

2
Yorick de Wid