ring0で実行されるプログラムのフォーマル検証なしでセキュリティを確保するにはどうすればよいですか?ユーザースペースのカーネルスペースを変えずにVMを使用できますか?
1 に答える
少し紛らわしい質問ですが、できる限りお答えします。
信頼できないコードを特権モードで実行することは、ほとんどの人が理解しているという意味で「安全」である可能性は低いです。ただし、正しく推測すると、信頼できないプロセスがその環境内で実行できるアクションを緩和するために、仮想マシンに似たものを使用することができます。これは、最新の「ハイパーバイザー」が動作する原理です。ハードウェア(またはメモリ)へのアクセスは、「モニター」ソフトウェアまたはハードウェアの一部によって緩和されます。
そうは言っても、そのアプローチを採用している場合は、仮想マシンのフォーマル検証が非常に望ましい場合があります。そうしないと、悪意を持って作成されたプログラムが仮想マシンから脱出する方法を見つけたり、仮想マシンを望ましくない方法で動作させたりする可能性があります。
この問題に対する合理的な最新のアプローチは、証明付きコードを使用することです。このコードでは、信頼できないコードの一部に、何らかのセキュリティポリシーに従って動作することを示すマシンチェック可能な証明が含まれています。その時点でホストオペレーティングシステムが行う必要があるのは、コードに対してプルーフをチェックすること(かなり計算コストの低い操作)です。そうすれば、仮想化やランタイムチェックを行わなくても、そのコードを安全に実行できます。