ASLR
ASLR とは何ですか?
ASLRASLR はコード、スタック、ヒープ、ライブラリの配置アドレスを実行ごとに乱数化し、攻撃者がエクスプロイトに使う目標アドレスを予測できないようにする緩和策です。
ASLR(アドレス空間配置のランダム化)は、プログラム実行ごとに実行ファイル、共有ライブラリ、ヒープ、スタック、mmap 領域などの主要な基底アドレスを乱数化する防御技術です。2001 年に PaX プロジェクトが初めて実装し、現在は Linux・Windows・macOS・iOS・Android で標準搭載されています。メモリ配置を予測不能にすることで、ROP のようなコード再利用攻撃を成立させるには事前のアドレスリークが必須となります。効果は十分なエントロピー、PIE による全バイナリのカバレッジ、そして DEP/NX、スタックカナリア、CFI といった他の緩和策との組み合わせに依存します。
● 例
- 01
Linux は exec ごとにスタック、ヒープ、PIE バイナリの基底アドレスを乱数化する。
- 02
Windows は起動ごとに kernel32.dll や ntdll.dll を再配置する。
● よくある質問
ASLR とは何ですか?
ASLR はコード、スタック、ヒープ、ライブラリの配置アドレスを実行ごとに乱数化し、攻撃者がエクスプロイトに使う目標アドレスを予測できないようにする緩和策です。 サイバーセキュリティの アプリケーションセキュリティ カテゴリに属します。
ASLR とはどういう意味ですか?
ASLR はコード、スタック、ヒープ、ライブラリの配置アドレスを実行ごとに乱数化し、攻撃者がエクスプロイトに使う目標アドレスを予測できないようにする緩和策です。
ASLR はどのように機能しますか?
ASLR(アドレス空間配置のランダム化)は、プログラム実行ごとに実行ファイル、共有ライブラリ、ヒープ、スタック、mmap 領域などの主要な基底アドレスを乱数化する防御技術です。2001 年に PaX プロジェクトが初めて実装し、現在は Linux・Windows・macOS・iOS・Android で標準搭載されています。メモリ配置を予測不能にすることで、ROP のようなコード再利用攻撃を成立させるには事前のアドレスリークが必須となります。効果は十分なエントロピー、PIE による全バイナリのカバレッジ、そして DEP/NX、スタックカナリア、CFI といった他の緩和策との組み合わせに依存します。
ASLR からどのように防御しますか?
ASLR に対する防御は通常、上記の定義で述べたとおり、技術的統制と運用上の実践を組み合わせます。
ASLR の別名は何ですか?
一般的な別名: アドレス空間配置のランダム化, PIE。
● 関連用語
- appsec№ 581
KASLR
KASLR(カーネル ASLR)は起動ごとにカーネル基底とモジュール配置を乱数化し、攻撃者が固定カーネルシンボルに依存したローカル権限昇格を行えないようにします。
- appsec№ 303
DEP(データ実行防止)
DEP(NX ビット、W^X)はメモリページを実行不可と印付けし、スタックやヒープに注入されたシェルコードの実行を阻止します。
- appsec№ 925
リターン指向プログラミング(ROP)
ROP は、RET で終わる短い命令列(ガジェット)を連結して、新しいコードを注入することなく任意の計算を実現するコード再利用型のエクスプロイト手法です。
- appsec№ 1095
スタックカナリア
スタックカナリアは、関数のローカルバッファと保存された戻りアドレスの間に置かれた秘密値で、制御フローを奪取される前にスタックオーバーフローを検出します。
- appsec№ 217
コントロールフロー整合性(CFI)
CFI はプログラムの間接呼び出しと戻りを事前計算した正当な遷移先集合に制限し、ROP や JOP による制御フロー奪取を阻止します。
- appsec№ 670
メモリ安全性
メモリ安全性とは、プログラムが正当に確保していないメモリを読み書きしたり実行したりしないという性質で、脆弱性のクラスをまとめて排除できます。
● 関連項目
- № 471ヒープスプレー
- № 469Heap Feng Shui
- № 569ジャンプ指向プログラミング(JOP)
- № 1028シャドースタック
- № 545Intel CET
- № 671メモリ安全言語