web-dev-qa-db-ja.com

メモリダンプ-仮想化の懸念の原因?

最近、私は仮想マシン全般に対する脅威の調査を始めました。私の頭に浮かんだ最初の質問は、ホストマシンがメモリ全体をファイルにダンプし、メモリを検査してVMのメモリイメージの内容を読み取ることができるかどうかでした。

仮想化は本質的にゲストとホストが同じRAMを共有するという事実につながるので、これは可能だと思います。

=====================
|           |VM|    |
=====================

メモリが次のようになっているとします。 VM合計8GBのうち1GBのメモリ。したがって、RAMをダンプすると、VM RAMの内容を表示できるはずです。

Q1。これは可能ですか? http://www.symantec.com/business/support/index?page=content&id=HOWTO31321 は、メモリダンプを取得する方法を示しています

Q2。これは脅威ですか? (私はそうは思いません)。しかし、誰かがアイデアを思いついたら、それは素晴らしいでしょう。

Q3。より興味深いシナリオ-VMはどういうわけかホストのメモリをつかむことができますか?すなわち、そのような攻撃を文書化したVMWareまたは他のソフトウェアに対する既知の攻撃はありますか?

8
sudhacker

これは可能ですか?
はい、可能です。ホストシステムはVMのメモリにアクセスできます。これにより、ホストはカーネルモードメモリを含め、VM内のあらゆるものを読み取ることができます。かなりの数のVMソリューションでは、ゲストインスタンスをファイルにダンプしたり、一時停止したりできます(つまり、VMバージョンの休止状態)。

これは脅威ですか?
VMのメモリは完全にホストの物理メモリに格納されるのではなく、部分的にスワップファイルに格納される可能性があることに注意してください。これは、ゲストOSのメモリの一部がホストのディスクに保存されることを意味し、ゲストOSが終了した後でも、スラックスペース分析が潜在的な攻撃になります。一時停止されたVMのイメージは、攻撃者がディスクを盗んだり、ホストでファイルの読み取り権限を取得したりした場合にもアクセスできる可能性があります。攻撃者がホストを危険にさらすことができる場合、攻撃者はVMプロセスで任意のメモリ読み取りおよび書き込みを発行し、データの盗難および操作を可能にする可能性があります。

VMはホストのメモリを取得できますか?
それはできません。 VMは、プロセッサとメモリコントローラの仮想化バージョンを作成することによって機能します。この仮想ハードウェアは、通常のメモリアクセス割り込みを受け取り、それらを仮想アドレス空間に変換します。たとえば、ゲストOSのカーネルは7a22d6aaの物理メモリにアクセスする必要があるかもしれませんが、VMは実際にはそのアドレスをvm.swap+0x7a22d6aaに変換するため、VMは翻訳を完全に認識していません。

このような攻撃には、VMに組み込まれた分離メカニズムの違反が必要になります。これらの分離メカニズムは非常に強力です。OS全体と、実行される可能性のあるすべてのソフトウェア/ドライバーが含まれている必要があるためです。分離は多くの場合、VT-xなどのCPU拡張機能を使用してハードウェアレベルで実装されます。ただし、VMシステムはソフトウェアであり、ソフトウェアには常にバグがあります。通常、VM上のソフトウェアがホストを攻撃できる脆弱性がありました。通常、ファイルの共有やクリップボード機能に使用されるOS間通信メカニズムを介して行われます。

5
Polynomial

ホストは確実に、VMがRAMと見なすものを含む)を含む、VMの完全な状態のコピーを取得できます。これは「スナップショット」と呼ばれ、望ましい機能です。

ホストシステムをカーネルのカーネルと考えることができます。 A VMをホストから保護することはできません。オペレーティングシステムが悪意のある破損したCPUから保護することはできません。セキュリティモデルがVM =ホスティングシステムから、セキュリティモデルは最初から運命づけられています。

(そのようなものcould完全準同型暗号化 のコンテキストに存在しますが、現在の研究の状態は、その領域で使用できるものを提供することはもちろん、効率的でもありません。)

他の方向では、VMはホストに含まれているはずであり、それをエスケープして他のVMまたはホスト自体に到達することはできません。今ではもちろん、それは理論ですが、実際には セキュリティホールが発生します

4
Thomas Pornin

私はこれと以前の答えについて少し異なる考えを持っています。

これは可能ですか?可能であれば脅威ですか?

それは可能かもしれないし、可能でないかもしれません。

技術的にはそれは可能であるはずです仮想化プログラムは制御しているオペレーティングシステム内で実行されているためです。したがって、オペレーティングシステムの特定の領域のメモリをダンプできるはずです。そして、それが可能であれば、ホストはその中で実行されている仮想環境への完全なアクセス権を持っている必要があるので、それは実際にはセキュリティの脅威ではないと思います。

しかし、実際には直接は不可能だと思います(ハイパーバイザーによって提供されるスナップショットなどの機能を使用しない限り)。これは、ハイパーバイザーがring -1で実行されるためです。これは、オペレーティングシステムよりも高い権限です(カーネル固有)。 ring 0です。したがって、ハイパーバイザーには、特定のメモリ領域について、オペレーティングシステムへのメモリアクセス権を拒否する権限があります。

1
shubham0d