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