|
Limitations and Security Concerns
The P2P Sockets project currently has the following limitations and security issues:
*
Spoofing host names and IP address on the peer network is trivial, as no mechanism currently exists to securely associate a given host name or IP address with a specific peer or peer group.
*
The network is vulnerable to denial-of-service attacks, where one peer floods the network with requests or attempts to continuously create server sockets.
*
The P2P Sockets package does not currently tie into the JVM Security Manager architecture, which would sandbox the code according to a security policy. Once a peer is exposed on a network, other peers could take advantage of flaws in the Java Virtual Machine or the P2P Sockets layer itself to compromise the peer computer. Being able to sandbox the peer code away from native machine resources would help this, but is not currently possible, since P2P Sockets doesn't check the security manager before any operation. It is also dangerous to include a JSP engine on an ordinary user's personal computer, as JSP depends on javac, the Java compiler. It is dangerous to include a network path to a language compiler, as this is a common way to compromise a computer and gain further access. You should precompile your JSPs into servlets and bundle the servlets with your peer programs instead of the full JSP engine.
*
Multicast IP addresses and Multicast sockets are not supported.
*
UDP sockets are not supported.
*
Site-local/private IP addresses (192.168.x.x) are not supported. Create your own private peer group if you want to simulate a private site address.
*
The various socket options, such as SoLinger, are not supported and are ignored.
*
Non-blocking I/O socket channels are not supported.
*
Loopback socket servers are exposed outside of their local machine, which is incorrect.
*
SSL/HTTPS is not supported.
*
The JXTA Configurator is still invoked if there is no JXTA configuration. This has several problems. First, it is one of the last pieces of P2P Sockets that exposes programmers to JXTA concepts, and second, it requires users to delve into a complex configuration system to figure out if they are behind a firewall or NAT device. A future project will address autoconfiguring these properties by having the peer "introspect" itself to see if it is behind a firewall, a NAT device, etc. |
|