ASLRとは

ASLR(Address Space Layout Randomization)は、プログラムが実行される際にメモリ上のスタック、ヒープ、ライブラリなどの配置を毎回ランダムに決定することで、セキュリティ上の脆弱性を突いた攻撃を困難にする技術のことです。

「アドレス空間配置のランダム化」と訳され、現代の主要なオペレーティングシステム(Windows、macOS、Linux、iOS、Androidなど)に標準的に搭載されている極めて重要な防御機構です。

ASLRの仕組みと目的

ASLRの主な目的は、バッファオーバーフローなどの脆弱性を悪用して、特定のメモリアドレスに配置された悪意のあるコードを実行させようとする攻撃を防ぐことにあります。

1. アドレスの予測不可能性

多くのサイバー攻撃は、システム内の特定の関数や実行コードが、常に同じメモリアドレスに存在することを前提として組み立てられます。ASLRが有効な環境では、実行のたびにアドレスが変化するため、攻撃者は実行したいコードがメモリ上のどこにあるかを特定できなくなります。

2. 攻撃コストの増大

攻撃者が特定のメモリアドレスを狙って攻撃を仕掛けても、アドレスがランダム化されているため、多くの場合でプログラムのクラッシュ(異常終了)を招くだけに終わります。攻撃を成功させるには、メモリ配置を特定するための別の脆弱性を組み合わせる必要があり、攻撃の難易度とコストを大幅に引き上げることができます。

脆弱性対策における役割

ASLRは、単独で脆弱性そのものを修正するものではありませんが、他の防御技術と組み合わせることで多層防御を実現します。

  • DEP(データ実行防止)との併用: DEPはデータ領域にあるコードの実行を禁止しますが、攻撃者は既存のシステムコードを組み合わせて実行する「Return-to-libc」などの手法でこれを回避しようとします。ASLRはシステムコードの場所を隠すことで、この回避策を封じます。
  • 多層防御の構成要素: 近年のシステムでは、ASLR、DEP、スタックカナリアなどの技術を多層的に適用することで、既知および未知の脆弱性に対する耐性を高めています。

ASLRの効果とエントロピー

ASLRの防御能力は、アドレスがどれだけ広範囲に、かつ細かくランダム化されるかという「エントロピー」に依存します。

例えば、32ビットシステムと比較して、64ビットシステムではアドレス空間が圧倒的に広いため、ランダム化の組み合わせ数(エントロピー)が劇的に増加します。ランダム化されるビット数を n とすると、アドレスの候補数は 2^n 通りとなります。

64ビット環境におけるASLRの有効性は、攻撃者が総当たり(ブルートフォース)攻撃によって正しいアドレスを的中させる確率 $P$ を、以下のように極めて低く抑えることに寄与します。

P = \frac{1}{2^n}

このため、特に広大なメモリ空間を持つ現代のコンピュータシステムにおいて、ASLRは極めて高い防御効果を発揮します。

運用の留意点と限界

ASLRは非常に強力な技術ですが、万能ではありません。

  • 情報の漏洩(Information Leak): 他の脆弱性によってメモリの一部が読み取られてしまうと、そこからベースとなるアドレスが逆算され、ランダム化が無効化される恐れがあります。
  • 不完全な実装: アプリケーション側が「再配置可能」としてコンパイルされていない場合、その一部のモジュールにはASLRが適用されず、攻撃の足がかりとなる固定アドレスが残ってしまうことがあります。
  • パフォーマンスへの影響: 実行時にアドレスを決定し、参照を解決するための処理が発生しますが、現代のプロセッサにおいてはそのオーバーヘッドは極めて軽微であり、実用上の問題になることはほとんどありません。

ASLRは、現代のITセキュリティにおいて「攻撃者の前提条件を崩す」という根本的なアプローチを提供しており、安全な計算機環境を維持するための不可欠なインフラストラクチャの一部となっています。

関連用語

コンパイル | 今更聞けないIT用語集
バッファオーバーフロー | 今更聞けないIT用語集
クラウドソリューション

お問い合わせ

システム開発・アプリ開発に関するご相談がございましたら、APPSWINGBYまでお気軽にご連絡ください。

APPSWINGBYの

ソリューション

APPSWINGBYのセキュリティサービスについて、詳しくは以下のメニューからお進みください。

システム開発

既存事業のDXによる新規開発、既存業務システムの引継ぎ・機能追加、表計算ソフトによる管理からの卒業等々、様々なWebシステムの開発を行っています。

iOS/Androidアプリ開発

既存事業のDXによるアプリの新規開発から既存アプリの改修・機能追加まで様々なアプリ開発における様々な課題・問題を解決しています。


リファクタリング

他のベンダーが開発したウェブサービスやアプリの不具合改修やソースコードの最適化、また、クラウド移行によってランニングコストが大幅にあがってしまったシステムのリアーキテクチャなどの行っています。