ASLR 【Address Space Layout Randomization】 アドレス空間配置のランダム化

概要

ASLR(Address Space Layout Randomization)とは、オペレーティングシステム(OS)が実行プログラムをメインメモリ上に展開する位置を毎回ランダムに変更することで攻撃を受けにくくする技術。主要なOSのほとんどが対応している。

不正にコードを実行させる攻撃としてよく用いられる手法に「バッファオーバーフロー」がある。プログラムが入力を受け付けるために用意したバッファ領域に想定を超える長大な文字列などを送りつけ、溢れた隣接領域にあるプログラムを攻撃コードに書き換えて実行させる手口である。

実行プログラムやライブラリ、スタック、ヒープなどの領域が毎回同じか似たような位置、配置でメモリ上に展開されると、攻撃者は各領域の位置関係やメモリアドレスの推測が容易になり、不正なコードを送り込んで実行させやすくなってしまう。

これを防ぐため、ASLRではメモリ上の配置を無作為に選択し、コードやデータが毎回異なる位置関係になるよう配置する。2007年頃からLinux、Windows、macOS、Android、iOSなど主要なOSに実装され始め、多くの製品ではデフォルトで有効に設定されている。

(2024.7.30更新)