web-dev-qa-db-ja.com

スペクターとメルトダウンの重要性は何ですか?

スペクターとメルトダウンの攻撃をもう一度読んでみると、なぜそんなに誇大宣伝されたのかわかりません。

これらは、キャッシュの実装に加えて、命令パイプライン処理の実装を利用するキャッシュ攻撃です。したがって、これはキャッシュ攻撃の単なる別のバリ​​エーションです。なぜこれらの2つの攻撃はそれほど誇大宣伝されているのですか?彼らははるかに優れていますか?彼らは物事を簡単にしますか?

  • 以前の攻撃では、プロセスからAESキーやその他の機密情報が抽出されました。
  • 以前はJavascriptベースのキャッシュ攻撃がありましたね。
  • 以前は、コア間で攻撃が行われていました。
  • 以前の攻撃は、複数のCPUを搭載したマシンでも機能します。

これらの2つのバリアントにより、攻撃がはるかに簡単になり、制御されやすくなることを理解していますか?それが理由ですか?

1
stflow

SpectreとMeltdownが過去のキャッシュ攻撃と異なる点がいくつかあります。攻撃に固有のものもあれば、単にコンピューティング環境の変化の結果であるものもあります。

攻撃について異なるもの:

  1. 修正するのは本当に難しいです。これらはハードウェアの問題であり、スペクターの場合はハードウェア設計実装のバグではなく問題。ハードウェアの修正は時間がかかり、費用がかかり、検証が困難です。 ソフトウェアの更新で問題を修正することはできません。これは、ほとんどのセキュリティバグで修正できる方法です。 Meltdownの「パッチ」は、修正よりも回避策としてより正確に説明されています(ユーザースペースプログラムが任意のカーネルメモリを読み取れるという根本的な問題を修正するのではなく、カーネルをユーザースペースプログラムからマップ解除するだけなので、何もする必要はありません。すべてのシステムコールでコンテキストスイッチのパフォーマンスコストを読んで食べてください)。スペクターにはそれすらありません。最も近いのは、JSタイマーの精度を下げて(正当なコードに悪影響を与える可能性があります)、タイミングの違いを検出するのを難しくする(不可能ではない)などです。
  2. 高速で信頼性が高く、実行が簡単です。高精度のタイマーと任意のインデックスを持つ連続メモリ配列をサポートする任意の言語(つまり、ほぼすべて)を非常に使用できます。悪用を成功させるために、ある言語から別の言語に簡単に移植できる短いコードブロック。これらは、毎秒非常に多くの非表示にする必要のあるデータ(簡単にKB、多くの場合MB、さらには数百MB)を抽出するために使用できます。これは、長い間取り組んでいれば、何か役に立つものしか得られないことが多い古い攻撃とは大きな違いです。
  3. 任意のメモリアドレスをターゲットにすることができ、プロセッサが検査したいことを実行するまで待つことに依存しません。以前のキャッシュ攻撃は、主に他のプログラムのキャッシュラインにあるものを確認することに焦点を当てていました。つまり、攻撃者は取得したものを選択できませんでした。他のプログラムが暗号化を実行していることがわかっている場合は、キーを抽出できる可能性がありますが、タイミングを混乱させたり(上記のポイントを参照)、アクセスしたいデータに強制的にアクセスできない場合(したがって、キャッシュ)攻撃が実行されているとき、ひどい。ただし、SpectreとMeltdownを使用すると、選択した任意のメモリアドレスを読み取ることができます。つまり、ウォークデータ構造などを実行して、探している情報を正確に見つけることができます。

コンピューティング環境について異なるもの:

  1. クラウドコンピューティングが一般的です。 2つの無関係で相互に信頼されていないエンティティが同じ物理マシン上で任意のコードを実行することは、最近のどの時点よりもはるかに一般的です。プロセスがJSサンドボックスを残りのアドレス空間から分割し、OSがプロセスアドレス空間を互いに分割するのと同じように、ハイパーバイザーはVM物理アドレス空間を互いに分割します。クラウド内で安全であるという大前提(「他の人のコンピューターでコードを実行する」)はこれらの部門に基づいて構築されており、Spectre/Meltdownはそれらを破壊します。
  2. JavaScriptはユビキタスで便利です。かつては高精度のタイマーや型付きおよび有界配列を使用しないおもちゃの言語でしたが、他のアプリケーションプログラミング言語に見られるほとんどの機能を備えた非常に強力な言語になりました。ブラウザは、JSサンドボックスに依存して、この機能の(ほとんどの)悪用を防ぐために、任意の、多くの場合信頼できないソース(Webサーバー)からコードを元気に実行します。サンドボックスの保護をバイパスし、JSで記述できる、SpectreやMeltdownのような攻撃の場合、ほぼすべてのエンドユーザーマシンに対して使用できる理想的な攻撃ベクトルです。
4
CBHacking

重要なのは、それぞれの脆弱性にさらされているプロセッサの普及率です。 (1)(2)(3)

IntelおよびAMDのCPUのほとんどは、何らかの形でSpectreやMeltdownに対して脆弱であり、非モバイル世界における2社の合計市場シェアはx86プロセッサでほぼ100%です。

Distribution of AMD and Intel x86 computer processors worldwide, from 2012 to 2017, by quarter ソース

パーソナルコンピュータに加えて、多くのモバイルデバイス(それらのプロセッサも投機的実行を使用します)、クラウドインフラストラクチャ(クラウドはどこでも )および仮想マシン(ここでもどこでも)も(部分的に)脆弱です。

オペレーティングシステムに関係なく、多くのデバイスに適用できるSpectreやMeltdownのような攻撃はめったに見られないと言っても過言ではありません。

合計しましょう、皆さん!何が脆弱ですか?
すべての非モバイルパーソナルデバイス、多くのモバイルデバイス、多くのサーバー、クラウドインフラストラクチャと仮想マシンの大きな塊。

今ではその意義を感じますか?

0
Tom K.