On 12/24/2011 2:14 AM, Dan Creswell wrote:
So...

On 23 December 2011 11:32, Peter Firmstone<j...@zeus.net.au>  wrote:
One question I've asked myself when creating my own policy implementation
was CodeSource.implies(CodeSource cs), the implementation seemed like a bad
idea, it uses DNS, an attacker could use DNS cache poisoning to gain
elevated permission using an untrusted CodeSource URL, simply because the
policy thinks the CodeSource is implied.  I changed PolicyFile to
specifically not use CodeSource.implies().  In reality a signer Certificate
is required to identify the CodeSource with any level of trust.

Well, I think a more general point here would be that JDK's default
set of behaviours are designed to "protect" against DNS based attacks
(i.e. a successful lookup result is cached forever and so changes
can't leak in). This is bogus, because if the first lookup is
compromised you're dead and buried.
I think it's fundamental to understand that a lot of the DNS caching behavior was born in the Applet world. When Java first hit the scenes, we had the problem that people could demonstrate that they could "know" the address of the socket on the remote end, and thus could use that (this was before NAT was in use, or at least wide spread), and poison the DNS so that subsequent lookups returned addresses on the local network, instead of the correct address of the original server.

That's one path of exploitation, but as Dan says, there are others in the Jini world where the first lookup, being poisoned, can cause exploitative code to be downloaded.

I think that it's vital to understand, that whether you cache the first, second or fifth lookup, each situation presents a different set of challenges in providing security. Ultimately, Jini needs, in my opinion, to focus authentication above the network layer, and use signed jars, encrypted paths, and cert based auth, so that the network path, can not be a part of the exploitation, and instead, each end of a "communication", is responsible for trusting the other, through negotiations carried through the network, instead of using information about the network to guarantee trust.

Gregg Wonderly

Reply via email to