3

私は、JAR ファイルを分析するクローズド ソースの Java アプリに取り組んでいます。Java は簡単に逆コンパイルでき、難読化は大した問題ではないため、サーバーでアプリを実行し、fernflower のように結果を返すオンライン サービスを提供したいと考えています: www.reversed-java.com/fernflower /。

問題は、jar を実行したことがないにもかかわらず、アプリが潜在的に有害な jar をサーバーにロードするという災害のレシピではないかと心配していることです。私がやっているのは、URLClassLoaderJarInputStreamを使用してそれらをロードすることだけです。

悪意のあるコードを実行したり、プログラムを台無しにしたりするために、ロードしている jar が元のアプリのクラスをオーバーライドすることはありますか?

jar を動的にロードする際のリスクは何ですか?

4

1 に答える 1

8

jar を動的にロードする際のリスクは何ですか?

動的にロードすること自体のリスクはありません。リスクは実際には、信頼されていないコードを実行するリスクです。適切な予防策を講じずにこれを行うと、マシンが完全に危険にさらされる危険があります.

この種のことを行う場合は、少なくとも、信頼できないコードをサンドボックスで実行して、有害な可能性があることを阻止する必要があります。たとえば、ローカル ファイルの読み取りと書き込み、外部プロセスの実行、リフレクションの使用、システム プロパティへのアクセスなどをブロックする必要があります。また、スレッドの作成、ソケットの作成、およびシステム リソースを消費するその他の処理を停止することもできます。

最後に、信頼できない JAR に無限ループのメソッドがある場合を考慮する必要があります。これは、セキュリティ サンドボックスを使用しても対処できない問題です。実際、ループ スレッドを取り除く唯一の確実な方法は、JVM を終了して再起動することです。

悪意のあるコードを実行したり、プログラムを台無しにするために、元のアプリでクラスをオーバーライドする jar im を読み込むことはできますか?

クラスを簡単にオーバーライドできるとは思いませんが、信頼できないコードが世界を「めちゃくちゃ」にする方法は他にもたくさんあります。上記を参照。(また、信頼できないコードがリフレクション コードを実行できる場合、クラスローダーのプライベート データ構造をいじって、クラスをオーバーライドする可能性があります。)

于 2011-11-29T07:29:18.447 に答える