On 18/05/2021 8:49 pm, Ron Pressler wrote:

On 18 May 2021, at 03:39, Peter Firmstone <peter.firmst...@zeus.net.au> wrote:


Is it also possible to consider directing file access and network access 
through single points of access?   This will simplify the process so we don't 
need to scour the entire codebase for usages.

Of all your suggestions, I think this is the one that will be seriously 
considered from a cost/benefit
perspective, although probably not as part of this JEP.


Thank you ,appreciated.



What about doPrivileged calls?   Will they remain in existing Java library 
code, so we can utilise them?  To avoid viral permission propagation?
Doubtful. That is where much of the cost is, and it would mean investing 
significant resources into supporting
a use-case that what seems like the vast majority of security experts think is 
a wrong-headed approach, for the sake
of the few who disagree. Even as an additional mechanism that might, maybe, 
block exploiting some vulnerability as a
result of some particular bug in some cases, sometimes, maybe, the high cost 
doesn’t justify what we believe is the
extra defence gained compared to the gain of such an effort directed elsewhere.

— Ron

Oh well, there was no harm in asking.

I agree that sandboxing is the wrong approach, it's unfortunate that this wasn't seen as a potential issue in the early days. It's similar with Java Serialization, if they tried to do less initially it would have been much better, but they pushed to envelope too far.

But I'm pretty sure we've moved on from discussing sandboxes, no one is claiming that as their use case.

However I disagree that the Principle of least privilege is wrong headed, I think you've been discussing sandbox concepts with the experts and they're going to tell you that's a bad idea.  But the two aren't the same, one is access control, the other is attempted complete leak proof isolation,  which is a very difficult thing to do that grows exponentially with your API surface area, I'm sure in years to come crackers will find vulnerabilities in VM's too. Sandboxing would work if you removed most of the library code and features and limited memory and threads, but I don't think anyone is seriously considering that.  Java for applets should have been it's own stripped down limited JVM.

Our problem is we will need to grant remote third party's AllPermission because they are not represented as a Subject based ProtectionDomain in the JVM, but then we could implement some sort of analysis that removes their ability to connect at all if they violate policy.

But this doesn't seem very workable.  Thankfully we have a very good, functional and highly scalable solution available now.

What sort of cost, you mean development cost, the cost of understanding doPrivileged?

At least to me, it's just a simple lambda expression, it's not difficult.  It think people are making this more complex than it needs to be due to a proliferation of Permissions, but even that I manage with tooling.

AccessController.doPrivileged uses 1.3% of CPU time in my system, and I'm sure I use it far more than many, so I don't think your talking about performance.

Thankfully access control is much simpler today than say programming concurrently, but I try to do both well.   I truly don't find it difficult to use, but then I've built a bunch of tools that make it useable.

But I get that JVM developers have suffered a lot of pain with Security vulnerabilities due to Java Serialization and the Sandbox and just the mention of SecurityManager is received negatively.

But it's such a shame to lose access control as collateral damage.

Thanks again for spending the time to discuss.

--
Regards,
Peter Firmstone
Zeus Project Services Pty Ltd.

Reply via email to