ASLR(Address Space Layout Randomization)は、2001年に最初に実装されたオペレーティングシステムで使用されているセキュリティ技術です。現在のバージョンのすべての主要オペレーティングシステム(iOS、Android、Windows、macOS、およびLinux)はASLR保護を備えています。しかし、先週、ASLRを迂回する新しい方法が発見されました。だから、あなたは心配する必要があります? 低レベルのプログラミング経験がない人にとって、ASLRは混乱を招く可能性があります。それを理解するには、まず仮想メモリを理解する必要があります. 仮想メモリとは? 仮想メモリは多くの利点を持つメモリ管理手法ですが、プログラミングを容易にするために主に作成されました。 4 GBのRAMを搭載したコンピュータで、Google Chrome、Microsoft Word、その他のプログラムをいくつか開いているとします。全体として、このコンピューターのプログラムは4 GB以上のRAMを使用しています。ただし、すべてのプログラムが常にアクティブになるわけではなく、そのRAMに同時にアクセスする必要もありません。. オペレーティングシステムは、呼び出されたプログラムに大量のメモリを割り当てます。 ページ数. 一度にすべてのページを保存するのに十分なRAMがない場合は、必要性が最も低いと思われるページを低速の(ただしより広い)ハードドライブに保存します。保存されたページが必要になると、現在RAMにある必要の少ないページでスペースを切り替えます。このプロセスはページングと呼ばれ、Windows上のpagefile.sysファイルにその名前を貸します。. 仮想メモリは、プログラムが自分自身のメモリを管理するのを容易にし、またそれらをより安全にします。プログラムは、他のプログラムがどこにデータを格納しているのか、あるいはどれだけのRAMが残っているのかを心配する必要はありません。必要に応じて、オペレーティングシステムに追加のメモリを要求する(または未使用のメモリを返す)ことができます。プログラムが見るのは、仮想アドレスと呼ばれる、その独占使用のための単一の連続したメモリアドレスの塊です。プログラムは他のプログラムのメモリを見ることはできません. プログラムがメモリにアクセスする必要があるとき、それはオペレーティングシステムに仮想アドレスを与えます。オペレーティングシステムは、CPUのメモリ管理ユニット(MMU)にアクセスします。 MMUは仮想アドレスと物理アドレスを変換し、その情報をオペレーティングシステムに返します。プログラムはRAMと直接対話しません。. ASLRとは? ASLR(Address Space Layout Randomization)は、主にバッファオーバーフロー攻撃から保護するために使用されます。バッファオーバーフローでは、攻撃者は可能な限り多くのジャンクデータを関数に渡し、その後に悪質なペイロードが続きます。ペイロードは、プログラムがアクセスしようとしているデータを上書きします。コード内の別のポイントにジャンプするための命令は一般的なペイロードです。たとえば、有名なJailbreakMeのiOS 4を脱獄する方法では、バッファオーバーフロー攻撃を使用し、AppleにiOS 4.3にASLRを追加するよう促していました。. バッファオーバーフローでは、攻撃者はプログラムの各部分がメモリのどこにあるのかを知る必要があります。これを理解するのは、通常、試行錯誤の難しいプロセスです。それを決定した後、彼らはペイロードを作成し、それを注入するのに適した場所を見つけなければなりません。攻撃者が自分のターゲットコードがどこにあるのかわからない場合、それを悪用することは困難または不可能です。. ASLRは仮想メモリ管理と連携して、メモリ内のプログラムのさまざまな部分の場所をランダムにします。プログラムが実行されるたびに、コンポーネント(スタック、ヒープ、ライブラリを含む)は仮想メモリ内の別のアドレスに移動されます。アドレスは毎回異なるため、攻撃者は試行錯誤を通じて自分のターゲットがどこにあるかを知ることができなくなります。一般に、アプリケーションはASLRサポートでコンパイルする必要がありますが、これがデフォルトになりつつあり、Android 5.0以降でも必要になります。. だからASLRはまだあなたを保護しますか? 先週の火曜日に、SUNY...