2016-09-28 11 views
0

javaagentがJVMに注入されているかどうか、またはjavagentsの添付を無効にするにはどうすればよいですか? セキュリティ上の理由により、実行時にアプリケーションが変更されないようにしようとしています。どのようにしてjavaエージェントを接続できないのですか?

私は、起動時にjavaagentが読み込まれるのを防ぐ方法を知っていますが、VirtualMachine APIが動的に接続されないようにする方法を見つけられませんでした。

誰でもアイデアがありますか?

+0

[java.lang.instrument](http://docs.oracle.com/javase/8/docs/api/java/lang/instrument/package-summary.html)には、 Javaエージェントを動的に接続する - 「VM起動後にエージェントを起動する」を参照してください 答えは「少なくとも1つのこのような条件を満たしていないことが望ましい」です。あなたの経験は何ですか? (どのように依然としてjavaエージェントが付いていますか?) –

+0

@Adrian Colomitchi必要な条件を読んで、私は1つ(クラスローダー)しか制御できないようです。私はClassloadersにはあまり自信がありません。したがって、クラスパスにエージェントのjarファイルが追加されるのを防ぐ独自のクラスローダーを作成するのは大変な作業です。特に、正当なライブラリが追加されないようにすることについて心配しています。それについてのヒントはありますか? – Stoud

+0

なぜそれをやる必要がありますか? 「特に、正当なライブラリが追加されるのを防ぐことは心配だ」もちろん。だから、顧客の誰が、余分な図書館の正当な使用か非正当な使用かを気にする最良のポジションにいるのだろうか?言い換えれば、なぜ、どのように「どのように」で十分ではないかというドキュメンテーションの強調された段落はなぜですか?あなたはセキュリティアプリケーションを書いていますか?もしそうでなければ、私はあなたのユーザーにこの責任を負わせ、それを文書化して世話をするだけで安全だと思います。 –

答えて

0

HotSpotでは-XX:+DisableAttachMechanismを設定でき、J9では-Dcom.ibm.tools.attach.enable=noで添付ファイルを無効にできますが、どのVMでも無効にすることはできません。あなたが行うことができるのは、計測インターフェイスの実際のインスタンスまたはnullが渡されないようにするために、premain(String, Instrumentationメソッドを使用してクラスをインストルメントすることです。私はそれを推奨しませんが、これは添付APIの一般契約を破るでしょう。

ただし、これによってセキュリティが強化されることはありません。添付ファイルでは、JVMプロセスにアクセスする権限を持つ別のプロセスが同じマシン上で実行されている必要があります。これが当てはまり、この他のプロセスが攻撃者である場合、計測APIは心配する必要がある最後の問題です。また、ライブラリを管理している場合、ライブラリのユーザーはコードに完全アクセスしており、コードを実行する前に変更することができます。

したがって、添付ファイルを無効にすることはできますが、「セキュリティを高める」ことはできません。

+0

私は同意するかどうか分からない、私はいつもすべてのハッシュをチェックすることができますので、私は彼らがライブラリを変更することを防ぐことができます一致する必要があります。 – Stoud

+0

ライブラリを変更できる場合は、ハッシュを変更できます。ここでできることは、あいまいさによるセキュリティです。 VMがあなたのコードを実行できるなら、私はそれを抽出することができます。 –

+0

ハッシュを変更する以外は、実行中のプログラムもチェックできるストアドプログラムを変更しています。変更されていないランタイムを持つ実行中のプロセスが常に存在する限り、私はバイパスすることは非常に難しいと思います。 – Stoud

関連する問題