web-dev-qa-db-ja.com

ブラウザベースの仮想マシン

分離されたブラウザータブ(仮想マシン)を提供するWebブラウザーの開発にハイパーバイザー(xenなど)の原則を適用すると、既存のWebアプリケーション(適切または不適切にコーディングされた)のセキュリティがどのように改善または低下しますか。

このコンテキストのWebアプリは、コアブラウザの書き込み可能なコピーである親ウィンドウjailに、ホワイトリストアプローチを使用してクロスOriginポリシーを設定し、タブ(unix jail)をjailするタブです。実際のブラウザ自体は読み取り専用で、起動時に署名チェックを実装できます。

クロスオリジンポリシーは、画像、JavaScript、CSS、フォントなどのリソースをホワイトリストに許可したマニフェストファイルです。

コンセプトは何も共有せず、ブラウザウィンドウを閉じるとすべてのトレースが完全に削除されます。すべてのtmpファイルは刑務所に格納されます。これにより、ウィンドウ/タブが閉じた後に悪用されるブラウザー実装の脆弱性から保護されます。

理論的には、この概念を拡張してTorなどのウィンドウアドオン/プラグインを可能にし、主流のユーザーが匿名性とプライバシーを利用できるようにすることができます。

8
Null

Webブラウザーはすでにタブを互いに分離しようとしています。 Chrome「タブごとに1つのプロセス」の原則を開拓し、他のブラウザが従った。この種の分離は、セキュリティよりも信頼性を高めるためのものでした。たとえば、プラグインのバグが原因で、1つのタブがクラッシュした場合、ブラウザプロセス全体が停止しないようにします。

VMテクニックを使用すると、Unixレベルの刑務所であれ、本格的なハイパーバイザーであれ、タブが破壊されている場合:いくつかのセキュリティホール、攻撃者はブラウザで自分の悪意のあるコードを実行することができます。VMはその攻撃を阻止しようとします。この問題には広範囲にわたる影響があります。たとえば、ローカルファイルのアップロードを要求するWebサイトをサポートするには、Webブラウザがローカルファイルを読み取ることができる必要があります。完全な分離が適用されると、機能が低下します。

あなたが完全に分離したい場合を参照してください Qubes OS を参照してください:これはLinuxベースのオペレーティングシステムであり、小さなVMを起動します個々のアプリケーション(またはアプリケーションのグループ)の場合、相互に認識できない複数のブラウザインスタンスを実行できます。

ただし、問題は通常、完全な分離を望まないことであり、悪意のあるフルプロセスハイジャックはまれです。ブラウザーは、ハイパーバイザーを使用しない、ある種の分離をすでに適用していますが、(通常)効果的です。セキュリティの問題は、タブプロセスの開始に起因するのではなく、必要な機能を実装するためにブラウザーによってタブ間で維持される通信チャネルに起因します。 Same-Origin Policy は、問題の一部である重要な概念です。SOPは、ブラウザが実施するセキュリティモデル、およびWebブラウザのほとんどのセキュリティ問題を具体化したものですSOP境界が定義されているあいまいさが原因です。

類推するために、ドアが付いているレンガの壁を考えます。ハイパーバイザー技術を使用すると、壁とドアフレームを鋼で補強するのと同じになります。これは悪いことではありませんが、ドアがロックされていないことが本当の問題である場合はあまり役に立ちません。ブラウジングインスタンス間の分離を強制する場合、本当に難しいのは、共有できるものと共有できないものを正確に定義することです。ハイパーバイザーは下位レベルで動作し、ポリシーを適用するための単なるツールですが、最初にポリシーを定義する必要があります。

5
Thomas Pornin