実行プログラムの命令やデータ、ヒープ、スタック等の配列を無作為に変更する技術。アドレス空間配置のランダム化。Vistaなどで対応している。Windows概要バッファーオーバーフロー脆弱性への対抗技術の一つ。オペレーティングシステムごとにアプローチは若干違うが、命令、ヒープ、スタックといった各領域について、メモリー領域への配列をランダム化する。実行ごとに無作為に配列されるため、バッファーオーバーフローを利用する不正な命令が、他の命令、文字列、あるいは共有ライブラリ等を(不正に)呼び出すことが難しくなり、もって攻撃を受けにくくでき、セキュリティが向上する。ASLRがない(従来の)状態では、同じようなシステムで同一のプログラムを実行すれば、命令や文字列などは同じ配置となる。この状態だと、バッファーオーバーフローによる攻撃がしやすい。特徴OpenBSD何よりもセキュリティを重視するOpenBSDが、ASLR的な機能を有効にした最初のOSとなった。この機能はW^Xと呼ばれているが、これはASLRとほぼ同じものである。LinuxASLRという語は元々、PaXというLinux向けの実装開発プロジェクトによる造語であった。Shieldといったセキュリティ向上パッチを導入することで、アプリケーションのバッファーオーバーフローに対抗することにした。PaXは、NXビットを併用したセキュリティ向上を目指した実装である。コード領域とデータ領域を明確にページ分けし、その上で、データ用ページは実行不可に、コード用ページは書き込み不可にするとともに、無作為な配置を実施する。これにより、プログラムに対し、正しい実行以外を出来ないようにするものである。Vista以降では、専用にASLRに対応するようにリンクされた実行ファイルに限り、ASLRが利用できるようになった。Shield相当以上のセキュリティが実現される。WindowsのASLRは、スタック、ヒープの他に、プロセス環境ブロック(PEB)などの配列も無作為に変更されるとしている。Microsoftの説明によれば、ASLRはDEPや/GSなど他の防御壁を突破して動作したコードの正常な実行を妨げることで、不正なプログラムの侵入防止をするもの、としている。