Meltdown and Virtual Machines では、少なくともSpectreがVMを越えて機能することが明らかになりました。もちろんこれは、ハイパーバイザーにパッチを適用する必要があることを意味しますが、
VM OSにもパッチを適用する必要がありますか?
実際のCPUではないため、プリフェッチに基づく攻撃に対して直接脆弱かどうか、またはハイパーバイザーにパッチを適用するだけで十分かどうかは明確ではありません。
私の理解は、最初に、OS /ハイパーバイザーパッチはメルトダウンを軽減するだけで、スペクターは軽減しないということです。
次に、ハイパーバイザーにパッチを適用して、VMがハイパーバイザーのカーネルに属するメモリを読み取れないようにします。ゲストOSにパッチを適用して、ゲストOSのカーネルに属するメモリをプロセスが読み取れないようにします。私の理解では、これらは互いに独立しているため、一方にパッチを適用しても他方には影響がありません。
エミュレーションと仮想化
私は仮想化技術の優れた専門家ではありませんが、あなたの質問は エミュレーションvs仮想化 に深く関わっています:すべてのレジスタ、キャッシュなどを含むCPUのエミュレーションでは、ソフトウェアで完全にシミュレーションされ、基盤となるハードウェアとは異なる命令セット。仮想化では、命令はハードウェアに直接渡されますが、ハイパーバイザーによって追加のプロセススケジューリングが課されます。特に、 x86仮想化 、具体的には IntelのVT-xテクノロジー についての私の理解は、ゲストOSが実際のx86を使用しているという意味で「実際のCPU」であるということです。多かれ少なかれ基本的なハードウェアに直接渡される命令。
したがって、はい、ゲストOSはMeltdownに対して脆弱であり、ハイパーバイザーにパッチが適用されているかどうかに関係なく、パッチを適用する必要があります。
私は使い捨てでテストしましたVM SpectrePoC からの概念実証コードを使用して(これは Spectre Attacks:Exploiting Speculative Execution に基づいています)、システムが悪用される可能性があると主張された点で機能しました。仮想マシンのゲストカーネルとホストカーネルにパッチを適用することをお勧めします。
ハイパーバイザーが新しいCPUIDとマシンレジスタを挿入した後、投稿された 情報 QEMUに基づいて、ゲストカーネルを更新し、再起動する必要があります。これはSpectreの問題の1つに対処します。悲しいかな、QEMUはこの執筆時点で関連するソースパッチをまだリリースしておらず、2.11.1バージョンであることが期待されているため、パッチが実行されている場合は、そのパッチの後にVMを再起動する必要がある場合があります。 QEMU。ゲストカーネルは新しいCPUID/MRを認識し、適切に反応する必要があります。他のハイパーバイザー(およびクラウドプロバイダー)がすでにこれらの変更を提供している可能性がありますが、悪意のあるアプリケーションからゲストOSを保護するには新しいカーネルが必要です。