仮想マシン/コンテナを実行していますが、どの程度脆弱なのでしょうか?

仮想マシン/コンテナを実行していますが、どの程度脆弱なのでしょうか?

VirtualBox のような仮想マシンにセキュリティ脆弱性「Spectre」がある可能性はありますか? VM はおそらく順序外実行を行うと思いますが、私の意見では、キャッシュを覗いて結果を読み取ることは不可能です。

仮想 CPU のキャッシュを読み取る方法についての説明はありますか?

答え1

はい、Spectre はホスト/ゲスト、ゲスト/ホスト、ゲスト/ゲストの境界を越える可能性があります。これは CPU レベルの欠陥であり、CPU コアで実行されるあらゆるものを通じて機密情報が漏洩する可能性があることを意味します。

インターネット上のニュース記事のほとんどは、仮想化されたシステムの大規模なクラスターがあり、機密情報を漏洩するために悪用される可能性があるため、クラウドプロバイダーがこの攻撃で最も大きな打撃を受けると述べています。

大手プロバイダーのほとんどは、今頃までに可能な限りの対策を講じて欠陥を修正しているはずですが、これは当分の間、私たちと共にある問題となるでしょう。

Security.SEには標準的なQ&Aこれに関して、VM について言及しています:

仮想マシン/コンテナを実行していますが、どの程度脆弱なのでしょうか?

に従ってステフェン・ウルリッヒの回答

  • メルトダウン攻撃は VM を越えることはなく、カーネル メモリをローカル プロセスに漏洩するだけです。
  • Spectre は VM 間で動作できます。

また、再びステフェンコンテナはホストカーネルに依存しているため、Meltdown と Spectre はコンテナで動作します。

VM は、システム内の実際の CPU を使用しますが、一部の特権命令はトラップされ、リダイレクト可能です。ホストと同じキャッシュと命令を使用します。基本的には、システム内の物理 CPU 内の別のレイヤーにすぎません。

仮想化が高速なのは、できるだけ抽象化せずに物理CPUを使用し、CPUハードウェアに依存して分離を実現しているからです。qemuのようなものは、エミュレーションハードウェアCPUではないのでより安全ですが、多くの速度が遅く、仮想化とは異なります。

からSecurity.se の正規投稿また:

Spectre は異なるレベルで動作し、ユーザー空間からカーネル空間データへのアクセスを許可しません。この攻撃では、攻撃者は投機的実行を騙して、命令を誤って予測的に実行します。簡単に言うと、予測子は特定の分岐結果 (if -> true) を予測するように強制され、その結果、被害者のプロセスが通常は要求しない範囲外のメモリ アクセスが要求され、誤った投機的実行が発生します。次に、サイド チャネルによって、このメモリの値を取得します。このようにして、被害者のプロセスに属するメモリが悪意のあるプロセスに漏洩します。

つまり、VM は実際の CPU ハードウェアで実行され、投機的実行エンジンを「トレーニング」するために特定のループを実行するだけで済みます。その後、正確なタイミングを使用して、悪用しようとしているホストまたはゲスト (または他の VM) プロセスを示す特定のアクセス パターンのキャッシュを監視できます。

つまり、マシンはあらゆる方向から悪用される可能性があるということです。ホストから VM、VM からホスト、VM から VM へ。

はい、それは決して簡単なことではなく、VM CPU コアがホストの気まぐれで変更される可能性があり、ホストが別のコアでタスクをスケジュールすることもできるため、実行するのは困難ですが、長期間にわたって十分な情報が漏洩し、重要なシステムまたはアカウントの秘密キーが渡される可能性があります。十分な時間と適切なステルス ソフトウェアがあれば、すべてが潜在的にオープンになります。

「安全な」VM が必要な場合は、コアが分離されていることを保証する必要があります。この攻撃をブロックする唯一の現実的な方法は、ホストと VM が特定のコアのみを使用するように「強制」し、同じハードウェアで実行されないようにすることですが、特定のホストで VM をそれほど多く実行できなくなるため、実質的にコストが増加します。使用可能なコア数よりも多くの VM を実行することは決してできません。これは、多くのシステムが寿命の 90% をアイドル状態のままにしておくため、「低負荷」サーバーで行われると予想されることです。

答え2

gem5シミュレータはCPUマイクロアーキテクチャをシミュレートし、Spectreの研究に使用できます。

ホスト CPU を使用せずに、純粋にエミュレーションで脆弱性を調査/再現することに興味がある場合、QEMU は CPU パイプラインをシミュレートしないため、脆弱性を観察するのに十分な詳細さがないと思います。

ジェム5ただし、研究開発においてシステム パフォーマンスを推定するために使用され、完全にクリーンかつ制御された環境で Spectre を観察するのに十分な CPU 内部をシミュレートします。

視覚化されたクールな x86_64 デモが次の場所で公開されています:http://www.lowepower.com/jason/visualizing-spectre-with-gem5.html

gem5 の欠点は、シミュレーションがより詳細であるにもかかわらず、QEMU よりもはるかに遅いことです。

関連情報