1

実行中の JVM の特別に制限された部分に Java バイトコードを実行する方法はありますか? 私は非常に小さなRAM(おそらく数十キロバイト)へのアクセスと、(そのRAMを除いて)外部世界へのアクセスをまったく考えていません。

目標は、不正なバイトコードの実行によってホストがクラッシュしたり、情報が漏洩したりしないように、ユーザーが提供したバイトコードをこの安全な環境で実行することです。

4

2 に答える 2

4

信頼できないバイトコードをセキュリティ サンドボックス内で実行し、サンドボックスをセットアップして、外部と通信できないようにすることができます。これは、信頼されていないアプレットを実行するときにブラウザー常駐の JVM が行うことです... ただし、サンドボックスの制限をより厳しくする必要があります。(アプレット サンドボックスは、すべてのネットワーク接続をブロックするわけではありません。)

参照: Java サンドボックスを作成するにはどうすればよいですか?

ただし、不正なコードの動作を完全に制御することはできません。たとえば、無限ループに入ったり、巨大なデータ構造を割り当てたりすることを決定した場合、JVM の信頼できる部分には、それを確実に停止する方法がありません。また、JVM、クラス ライブラリ、またはサンドボックスにセキュリティ上の欠陥がある場合、不正なコードがそれを悪用する可能性があります。


これには、コードを RAM の特定の領域に制限することは含まれないことに注意してください。Javaではそれができません。

于 2013-01-07T02:05:22.123 に答える
1

このタイプの演習には、JavaPathfinder (JPF)を使用できます。JPFは、ソースコード/バイトコードを受け取り、独自の仮想マシンで実行するモデル チェック ツールです。チェックするさまざまなプロパティ (デッドロック フリー、無限ループなど) を定義できます。

JPF自立型ツールとして動作するため、アプリケーションに統合するのは難しいですが、外部から呼び出して結果を照会するだけでよいでしょう。

于 2013-01-08T03:23:09.733 に答える