Hi Dmitry,

I took a look at this, I have two practical issues:

1:
[rehn@rehn-ws dev]$ java 
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:9999,allow=6.6.6.6
 -cp runs ForEver
Listening for transport dt_socket at address: 9999
ERROR: transport error 202: peer not allowed to connect: Success
JDWP exit error JVMTI_ERROR_NONE(0): could not connect, timeout or fatal error 
[transport.c:358]

So connecting with an unallowed client terminates the VM.

2:
[rehn@rehn-ws dev]$ java 
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:9999,allow=6.BAD.6.6
 -cp runs ForEver
Listening for transport dt_socket at address: 9999
ERROR: transport error 202: unable to parse list of allowed peers: Success
JDWP exit error JVMTI_ERROR_NONE(0): could not connect, timeout or fatal error 
[transport.c:358]

Starting with an bad allow filter terminates the VM when connecting a client.


Connecting with an unallowed ip/port should not terminate the VM and we should 
verify allow filter directly at startup.

Thanks

/Robbin

On 02/28/2017 10:41 AM, Dmitry Samersoff wrote:
Everybody,

Please review:

http://cr.openjdk.java.net/~dsamersoff/JDK-8061228/webrev.10/

These changes introduce new parameter[1] of the socket transport -
allow. Users can explicitly specify a list of hosts that allowed to
connect to jdwp server and it's the second part of JDWP hardening[2].

No restrictions are applied by default now but I'll file a separate CR
to restrict list of allowed peers to localhost by default.

Also these changes implement versioning for jdwp transport and therefor
simplify feature development of jdwp.


1. Example command line:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,
address=*,allow="127.0.0.0/8;192.168.0.0/24"

Possible values for allow parameter:
  *           - accept connections from everywhere.
  N.N.N.N     - accept connections from this IP address only
  N.N.N.N/nn  - accept connections from particular ip subnet



2. JDK-8052136 JDWP hardening

-Dmitry

Reply via email to