RFR: 8272317: jstatd has dependency on Security Manager which needs to be removed

Stuart Marks smarks at openjdk.java.net
Fri Dec 24 20:17:22 UTC 2021


On Wed, 22 Dec 2021 22:01:00 GMT, Kevin Walls <kevinw at openjdk.org> wrote:

>> src/jdk.jstatd/share/classes/sun/tools/jstatd/Jstatd.java line 51:
>> 
>>> 49:     private static RemoteHost remoteHost;
>>> 50: 
>>> 51:     private static final String rmiFilterPattern = "sun.jvmstat.monitor.remote.RemoteVm;com.sun.proxy.jdk.proxy1.$Proxy1;com.sun.proxy.jdk.proxy1.$Proxy2;java.lang.reflect.Proxy;java.rmi.server.RemoteObjectInvocationHandler;java.rmi.server.RemoteObject;!*";
>> 
>> The class name of the dynamic proxy is generated at runtime and can be different.   As Bernd commented, the proxy classes cannot/should not be listed in the filter pattern.
>
> OK thanks - I was trying the minimal pattern to overcome rejections such as the following, captured in logs on different runs:
> 
> <message>ObjectInputFilter REJECTED: class com.sun.proxy.jdk.proxy1.$Proxy1, array length: -1, nRefs: 2, depth: 1, bytes: 84, ex: n/a</message>
> 
> <message>ObjectInputFilter REJECTED: class com.sun.proxy.jdk.proxy1.$Proxy2, array length: -1, nRefs: 2, depth: 1, bytes: 84, ex: n/a</message>

I think the proxy classes need to be there. The `RemoteHost` API has a parameter of type `RemoteVm` which is a stub to an RMI remote object, which consists of a proxy and a handler. The proxy's interface list is filtered by the serialization filter so somebody can't just pass a proxy for anything.

The name of the proxy class probably does need to be wildcarded though.

-------------

PR: https://git.openjdk.java.net/jdk/pull/6919



More information about the security-dev mailing list