VirtualBoxのような仮想マシンにセキュリティの脆弱性「spectre」がある可能性はありますか? VMはおそらく順不同で実行されると思いますが、私の意見では、キャッシュを覗いて結果を読み取ることはできません。
仮想CPUのキャッシュを読み取る方法はありますか?
はいSpectreは、ホスト/ゲスト、ゲスト/ホスト、ゲスト/ゲストの境界を越えることができます。これは、CPUレベルの欠陥であり、CPUコアで実行されているあらゆるものに機密情報が漏洩する可能性があるためです。
インターネット上のほとんどのニュースストーリーは、クラウドプロバイダーが仮想化されており、機密情報を漏洩するために悪用される可能性のあるシステムの大規模なクラスターを持っているため、これによって最悪の打撃を受けていることについて語っています。
大規模なプロバイダーのほとんどは、できる限りこの欠陥に対してパッチを適用しているはずですが、これはしばらくの間私たちと共存する問題になるでしょう。
Security.SEには、これに関する 正規のQ&A があり、VMについて言及しています:
仮想マシン/コンテナを実行していますが、どの程度脆弱ですか?
- メルトダウン攻撃はVMを通過せず、カーネルメモリをローカルプロセスにリークするだけです。
- SpectreはVM全体で機能します。
また、 Steffen再び から、コンテナはホストカーネルに依存しているため、MeltdownとSpectreはコンテナで動作します。
VMはシステム内の実際のCPUを使用し、一部の特権付き命令はトラップされ、リダイレクトできます。ホストと同じキャッシュと命令を使用します。これは基本的に、システムの物理CPU内の単なる別のレイヤーです。
仮想化は、抽象化を最小限に抑えて物理CPUを使用し、分離を提供するためにCPUハードウェアに依存しているため、高速化のみです。 qemuのようなものはemulationハードウェアCPUではないため安全ですが、much遅く、仮想化とは異なります。
Security.se canonical post から:
Spectreは別のレベルで動作し、ユーザー空間からカーネル空間データへのアクセスを許可しません。この攻撃では、攻撃者は投機的実行をだまして、誤って命令を予測的に実行します。簡単に言えば、予測子は特定の分岐結果を予測するように強制されます(-> trueの場合)。その結果、犠牲プロセスが通常要求していない範囲外のメモリアクセスを要求し、誤った投機的実行を引き起こします。次に、サイドチャネルによって、このメモリの値を取得します。このようにして、犠牲プロセスに属するメモリが悪意のあるプロセスにリークされます。
したがって、VMは実際のCPUハードウェアで実行され、特定のループを実行して投機的実行エンジンを「トレーニング」するだけなので、正確なタイミングを使用してキャッシュを監視できます。利用しようとしているホストまたはゲスト(または他のVM)プロセスを示す特定のアクセスパターン。
このように、それはマシンがあらゆる方向に利用可能であることを意味します。ホストからVMへ、VMからホストへ、およびVMからVMへ。
はい、それは決して簡単ではなく、VM CPUコアはホストの気まぐれに変更される可能性があり、ホストは異なるコアでタスクを楽しくスケジュールできるため、しかし、長期間にわたって、重要なシステムやアカウントに秘密鍵を渡すのに十分な情報が漏洩する可能性があります。
「安全な」VMが必要な場合は、コアが分離されていることを保証する必要があります。この攻撃をブロックする実際の方法は、ホストとVMに特定の使用のみを強制することです。コアが同じハードウェア上で実行されることはありませんが、特定のホスト上に多くのVMを配置することができないため、コストが効果的に増加します。より多くのVMを実行することはできません。多くのシステムがその寿命の90%の間アイドル状態にあるため、コアは利用可能です。これは、「低負荷」サーバーで実行されると期待されることです。
gem5
ホストCPUを使用せずに、エミュレーションのみで脆弱性を調査/再現することに関心がある場合、QEMUはCPUパイプラインをシミュレートしないため、それらを観察できるほど詳細ではないと思います。
ただし、gem5は研究開発におけるシステムパフォーマンスの推定に使用され、完全にクリーンで制御された環境でSpectreを観察するのに十分なCPU内部をシミュレートします。
視覚化を備えたクールなx86_64デモが以下で公開されています http://www.lowepower.com/jason/visualizing-spectre-with-gem5.html
Gem5の欠点は、QEMUよりもはるかに遅く、シミュレーションがより詳細になることです。