如何检查javaagent是否被注入到JVM或禁用附加javaagent?出于安全原因,我正在尝试防止我的应用程序在运行时被修改。
我知道如何防止javaagent在启动时被加载,但我无法想出一种方法来防止VirtualMachine API动态附加。
有谁有主意吗?
发布于 2016-09-28 18:38:57
在HotSpot上,您可以设置-XX:+DisableAttachMechanism;在J9上,您可以通过-Dcom.ibm.tools.attach.enable=no禁用附件,但无法对任何VM禁用它。您可以做的是自己插装具有premain(String, Instrumentation方法的任何类,使其不被传递给插装接口或null的实际实例。但是,我不建议这样做,这会破坏attach API的一般合同。
然而,所有这些都不能提高安全性。附件要求有权访问您的JVM进程的另一个进程在同一台计算机上运行。如果是这种情况,而另一个进程是攻击者,那么插装API就是您应该担心的最后一个问题。此外,如果您维护一个库,则您的库的用户已经拥有对您的代码的完全访问权限,并且可以在运行您的代码之前对其进行修改。
因此,即使can可以禁用附件,这样做也不会增加“安全性”。
https://stackoverflow.com/questions/39736643
复制相似问题