サーバー上のメモリ断片を遠隔から特定する攻撃手法が提案されている

MDS、NetSpectre、Throwhammer、ZombieLoad 攻撃を開発したことで知られるグラーツ工科大学 (オーストリア) の研究者グループが、メモリ重複排除メカニズムに対する新しいサイドチャネル攻撃手法 (CVE-2021-3714) を公開しました。これにより、メモリ内に特定のデータが存在するかどうかを判断したり、メモリ内容のバイトごとのリークを整理したり、アドレスベースのランダム化 (ASLR) 保護をバイパスするメモリ レイアウトを決定したりすることができます。この新しい手法は、HTTP/1 および HTTP/2 プロトコル経由で攻撃者に送信されるリクエストに対する応答時間の変化を基準として使用して、外部ホストから攻撃を実行するという、これまでに実証された重複排除メカニズムに対する攻撃の亜種とは異なります。 Linux および Windows ベースのサーバーに対して攻撃を実行する能力が実証されています。

メモリ重複排除メカニズムに対する攻撃は、データの変更によりコピーオンライト (COW) メカニズムを使用して重複排除されたメモリ ページのクローンが作成される状況で、書き込み操作の処理時間の差を情報漏洩のチャネルとして使用します。 。動作中、カーネルは異なるプロセスから同一のメモリ ページを検出してマージし、同一のメモリ ページを物理メモリの 1 つの領域にマッピングして 1 つのコピーのみを保存します。いずれかのプロセスが重複排除されたページに関連付けられたデータを変更しようとすると、例外 (ページ フォールト) が発生し、コピー オン ライト メカニズムを使用して、メモリ ページの別のコピーが自動的に作成され、プロセスに割り当てられます。コピーの完了にさらに時間がかかりますが、これはデータ変更が別のプロセスに干渉している兆候である可能性があります。

研究者らは、COW メカニズムに起因する遅延はローカルだけでなく、ネットワーク上の応答配信時間の変化を分析することによっても把握できることを示しました。 HTTP/1 および HTTP/2 プロトコルを介したリクエストの実行時間を分析することで、リモート ホストからメモリの内容を判断する方法がいくつか提案されています。選択したテンプレートを保存するには、リクエストで受信した情報をメモリに保存する標準的な Web アプリケーションが使用されます。

この攻撃の一般原理は、要約すると、サーバー上のメモリ ページを、サーバー上に既に存在するメモリ ページの内容を潜在的に繰り返すデータで埋めることです。次に、攻撃者はカーネルがメモリ ページを重複排除してマージするのに必要な時間を待機し、制御された重複データを変更し、応答時間を評価してヒットが成功したかどうかを判断します。

サーバー上のメモリ断片を遠隔から特定する攻撃手法が提案されている

実験中の最大情報漏洩率は、グローバル ネットワーク経由で攻撃した場合は 34.41 時間あたり 302.16 バイト、ローカル ネットワーク経由で攻撃した場合は 7.5 時間あたり XNUMX バイトでした。これは、サードパーティ チャネル経由でデータを抽出する他の方法 (たとえば、 NetSpectre 攻撃では、データ転送速度は XNUMX 時の時点で XNUMX バイトです)。

166.51 つの実用的な攻撃オプションが提案されています。最初のオプションでは、Memcached を使用する Web サーバーのメモリ内のデータを確認できます。この攻撃は、要約すると、特定のデータセットを Memcached ストレージにロードし、重複排除されたブロックをクリアし、同じ要素を再書き込みし、ブロックの内容を変更することで COW コピーが発生する条件を作成します。 Memcached を使用した実験中、仮想マシンで実行されているシステムにインストールされている libc のバージョンを XNUMX 秒で特定することができました。

1.5 番目のオプションでは、InnoDB ストレージを使用する場合に、内容をバイトごとに再作成することで、MariaDB DBMS 内のレコードの内容を見つけることが可能になりました。この攻撃は、特別に変更されたリクエストを送信することによって実行され、その結果、メモリ ページ内で XNUMX バイトの不一致が生じ、応答時間を分析してバイトの内容に関する推測が正しいかどうかを判断します。このような漏洩の割合は低く、ローカル ネットワークからの攻撃の場合、XNUMX 時間あたり XNUMX バイトに達します。この方法の利点は、未知のメモリ内容を回復するために使用できることです。

4 番目のオプションでは、オフセット アドレスが他のデータが変更されないメモリ ページ内にある状況で、KASLR 保護メカニズムを 14 分で完全にバイパスし、仮想マシン カーネル イメージのメモリ オフセットに関する情報を取得することが可能になりました。この攻撃は、攻撃対象システムから XNUMX ホップ離れたホストから実行されました。提示された攻撃を実装するためのコード例は、GitHub で公開されることが約束されています。

出所: オープンネット.ru

コメントを追加します