Red Hat Bugzilla – Bug 1309686
jboss: java.rmi.server.UnicastRemoteObject deserialization opens RMI listening socket
Last modified: 2016-05-09 10:34:06 EDT
It was found that by sending an appropriate serialized object, one can cause the target JVM to open a listening socket on a client-specified port, start a thread to process requests, and have limited execution of specific code - which could be used for a DoS.
java.rmi.server.UnicastRemoteObject is a Serializable object whose readObject() methods calls exportObject() which will open a TCP listening socket on the port specified by the 'port' field and listen for RMI requests. Depending on the 'java.rmi.server.hostname' property and environment it may be localhost-only or remotely accessible. If enough requests are sent, it could lead to starvation of local port numbers, file descriptors and threads. If that open socket is not protected from remote access (say by a firewall), an attacker can send RMI invocations to it.
We were able to reproduce a starvation of local port numbers, file descriptors and threads, however we could not bind remote objects into the RMI Server created by an exploit of this flaw. Therefore we're treating this issue as a moderate impact, DoS flaw only.