仮想ハードウェア上のデータを保護するための合理的な方法はありますか? 「仮想ハードウェア」とは、XEN、KVM、VMWare ESXiなどの上で実行される、さまざまなオンラインホスティング業者からレンタルできるさまざまなホストシステムです。
実際の専用ハードウェアでは、次の場合にシステム自体が危険にさらされていないと多少安全に想定できます。
しかし、仮想ハードウェアでは、ホストが再起動したりオフラインにしたりせずにマシンを自由に一時停止、コピー、再起動できるため、ハードウェアが侵害されていないという仮定はもはや成り立ちません。さらに、ホスティング事業者は、仮想マシン全体がRAM=およびディスク-まだ実行中の場合)に直接アクセスできます。
少し努力すれば、ホスティング業者はシステム上のauthorized_keysまたは/ etc/passwdファイルを変更して(root-)アクセスを取得し、現在マウントされている暗号化パーティションの内容を表示できる可能性さえあります。
これらの脆弱性または可能な攻撃を考えると、私の質問は次のとおりです。
これらの脆弱性はどれほど現実的ですか、それらは実際の脅威ですか、それとも単なる「サイエンスフィクション」ですか?実際にそれらを非実用的にするものはありますか? VMソフトウェアベンダー(Citrix、VMWareなど)は、これらの攻撃をより困難にするセキュリティメカニズムを実装していますか? (これは、あいまいなセキュリティ以外に、これを困難にするためにできることはありますか?)または、VMベンダーはこれらの攻撃を容易にするツールをホスティング業者(結局は直接のクライアント)に提供しているのでしょうか。
ゲストOSが自分自身またはRAMおよびディスク上のデータをこの種の攻撃から保護できる効果的な方法はありますか?信頼できるコンピューティングアプローチ(署名付きコードなど)は私はDEPとASLRについて知っていますが、それでもホストが利用可能なメモリのすべてのビットを読み取るのを実際に止めることはありません。また、RAM暗号化は従来のx86ハードウェア/ VMでは問題にならないと思います。もはや「ランダムアクセス」メモリではありません。
これに関する調査はありましたか?このトピックに関する議論がほとんどないことに驚いています。すべてがすでに明白であるか解決できないのですか、それともまだ関心がほとんどないのですか?
私には、仮説を考慮するだけで、仮想サーバーが実際のホストの管理者から実用的な技術的保護を受けられないことは明らかです。
具体的に説明します。実際のホストを制御できれば、仮想サーバーをクラックするのが非現実的である必要はありません。これが私が想像するような戦略です。仮想マシンのホストソフトウェアを分解し、仮想キーボードドライバーを見つけます。次に、VMホストソフトウェアではなく、おそらくオペレーティングシステムカーネルのディスパッチテーブルを変更します。このようにして、仮想キーボードドライバに特徴的なシステムコールのシーケンスを作成できます。仮想入力キーのロガーをトリガーする結果は、仮想サイドからは明確に検出できない仮想サーバーのキーロガーです。
この種の操作を防止するホストシステムは、おそらくあまり機能しません。アナリストに意図的に障害を追加せずにソフトウェアをデバッグおよび監視するのは十分に困難です。
リソースに関する限り、グーグル検索/学者検索は、仮想化の理論的および実用的なセキュリティへの影響について多くの結果をもたらすと確信しています。これが私が見つけたものです(しかし、もっとたくさんあります): NIST完全仮想化セキュリティガイドライン
はい、仮想化により、ハードウェアで直接実行すると、アクセスしにくい(ただし、まだ可能である)多くの攻撃経路が開かれます。ただし、既存のオペレーティングシステムを使用する代わりに、コード全体をハードウェアから実行するように記述することについても同じ原則が言えます。独自の低レベルメモリアクセス、I/O、およびプロセス管理を行って、カーネルパッチやトロイの木馬がプログラムと同じメモリセグメントにアクセスする可能性を回避します。
もちろん信頼の問題もあります。ホスティングプロバイダーを信頼できない場合は、私のハードウェアでも信頼できません。オペレーティングシステムを信頼していますか?すべてのサードパーティアプリケーションコードとモジュールを信頼していますか?
最後に、そして最も重要なことは、私の意見では、人生のほとんどすべてと同様に、それはリスクと利益のトレードオフです。 「クラウド」での仮想化と仮想ホスティングの多くのメリットすべてが必要ですか? (仮想サーバーのプログラムによる起動、サーバーのスケールアップ/ダウン、スナップショットの実行、仮想マシンのクローン作成、追加のハードウェアを必要とせずに各サーバーへの簡単なコンソールアクセス、仮想ネットワークインターフェイスの追加による複雑なネットワーク設定の作成など)または、柔軟性は低くてもセキュリティを強化したいですか?もちろん選択はあなた次第です。そしてそれはあなたのリスク対利益の認識に依存します。
*仮想化は可用性の向上に役立つと主張する人もいますが、これはもちろんセキュリティの重要な部分でもあります。