アドレス空間配置のランダム化(ASLR)は、オペレーティングシステムで使用されるセキュリティ技術であり、2001年に最初に実装されました。すべての主要なオペレーティングシステム(iOS、Android、Windows、macOS、Linux)の現在のバージョンは、ASLR保護を備えています。しかし、先週、ASLRをバイパスする新しい方法 見つかった 。それで、あなたは心配する必要がありますか?
低レベルのプログラミングのバックグラウンドを持たない人にとって、ASLRは混乱を招く可能性があります。それを理解するには、最初に仮想メモリを理解する必要があります。
仮想メモリとは何ですか?
仮想メモリは多くの利点があるメモリ管理手法ですが、主にプログラミングを容易にするために作成されました。 4 GBのRAMを搭載したコンピューターで、Google Chrome、Microsoft Word、およびその他のいくつかのプログラムを開いているとします。全体として、このコンピューター上のプログラムは4GBをはるかに超えるRAMを使用します。ただし、すべてのプログラムが常にアクティブであるとは限らず、そのRAMに同時にアクセスする必要もありません。
オペレーティングシステムは、メモリのチャンクを次のプログラムに割り当てます。 。すべてのページを一度に保存するのに十分なRAMがない場合、必要になる可能性が最も低いページは、低速の(ただしより広い)ハードドライブに保存されます。保存されたページが必要になると、現在RAMにある必要の少ないページとスペースが切り替わります。このプロセスはページングと呼ばれ、その名前を Windows上のpagefile.sysファイル 。
仮想メモリを使用すると、プログラムが独自のメモリを管理しやすくなり、安全性も高まります。プログラムは、他のプログラムがデータを保存している場所や、残りのRAMの量について心配する必要はありません。必要に応じて、オペレーティングシステムに追加のメモリを要求する(または未使用のメモリを返す)ことができます。プログラムが認識するのは、仮想アドレスと呼ばれる、排他的に使用される単一の連続したメモリアドレスのチャンクだけです。プログラムは、別のプログラムのメモリを見ることができません。
プログラムがメモリにアクセスする必要がある場合、オペレーティングシステムに仮想アドレスを提供します。オペレーティングシステムは、CPUのメモリ管理ユニット(MMU)に接続します。 MMUは仮想アドレスと物理アドレスの間を変換し、その情報をオペレーティングシステムに返します。プログラムがRAMと直接対話することはありません。
ASLRとは何ですか?
アドレス空間配置のランダム化(ASLR)は、主にバッファオーバーフロー攻撃から保護するために使用されます。バッファオーバーフローでは、攻撃者は関数が処理できる限り多くのジャンクデータをフィードし、その後に悪意のあるペイロードが続きます。ペイロードは、プログラムがアクセスしようとしているデータを上書きします。コード内の別のポイントにジャンプするための命令は、一般的なペイロードです。有名な iOS4を脱獄するJailbreakMeメソッド たとえば、バッファオーバーフロー攻撃を使用して、AppleにiOS4.3にASLRを追加するように促しました。
バッファオーバーフローでは、攻撃者はプログラムの各部分がメモリ内のどこにあるかを知る必要があります。これを理解することは、通常、試行錯誤の難しいプロセスです。それを決定した後、彼らはペイロードを作り、それを注入するのに適した場所を見つけなければなりません。攻撃者がターゲットコードの場所を知らない場合、それを悪用することは困難または不可能である可能性があります。
ASLRは、仮想メモリ管理と連携して、メモリ内のプログラムのさまざまな部分の場所をランダム化します。プログラムが実行されるたびに、コンポーネント(スタック、ヒープ、ライブラリなど)が仮想メモリ内の別のアドレスに移動されます。攻撃者は、アドレスが毎回異なるため、試行錯誤によってターゲットがどこにあるかを知ることができなくなります。通常、アプリケーションはASLRサポートを使用してコンパイルする必要がありますが、これがデフォルトになりつつあり、Android5.0以降でも必要になります。
それで、ASLRはまだあなたを保護しますか?
先週の火曜日、SUNYビンガムトンとカリフォルニア大学リバーサイド校の研究者が ASLRを飛び越える:分岐予測器を攻撃してASLRをバイパスする 。このホワイトペーパーでは、分岐ターゲットバッファ(BTB)を攻撃する方法について詳しく説明しています。 BTBは、結果を予測することによってifステートメントを高速化するプロセッサの一部です。著者の方法を使用すると、実行中のプログラム内の既知の分岐命令の場所を特定できます。問題の攻撃は、Intel Haswellプロセッサ(2013年に最初にリリースされた)を搭載したLinuxマシンで実行されましたが、最新のオペレーティングシステムとプロセッサに適用される可能性があります。
とはいえ、必ずしも絶望する必要はありません。このホワイトペーパーでは、ハードウェアおよびオペレーティングシステムの開発者がこの脅威を軽減する方法をいくつか紹介しました。新しい、きめ細かいASLR手法では、攻撃者の努力がさらに必要になり、エントロピー(ランダム性)の量を増やすと、ジャンプオーバー攻撃が実行不可能になる可能性があります。ほとんどの場合、新しいオペレーティングシステムとプロセッサはこの攻撃の影響を受けません。
だから何のために残されている する?ジャンプオーバーバイパスは新しく、まだ実際には発見されていません。攻撃者がそれを悪用すると、この欠陥は攻撃者がデバイスに引き起こす可能性のある潜在的な損害を増大させます。このレベルのアクセスは前例のないものではありません。 MicrosoftとAppleは、2007年以降にリリースされたオペレーティングシステムにのみASLRを実装しました。このスタイルの攻撃が当たり前になったとしても、WindowsXPの時代よりも悪化することはありません。
攻撃者が危害を加えるには、デバイスにコードを取得する必要があることに注意してください。この欠陥は、あなたに感染するための追加の方法を彼らに提供しません。いつものように、あなたはすべきです セキュリティのベストプラクティスに従う 。ウイルス対策を使用し、大ざっぱなWebサイトやプログラムに近づかないようにし、ソフトウェアを最新の状態に保ちます。これらの手順に従い、悪意のある攻撃者をコンピュータから遠ざけることで、これまでにないほど安全になります。
画像クレジット: スティーブ / Flickr