Some quick clarifications, I'll try to reply properly in the next few days.

On 17/05/2021 9:29 pm, Ron Pressler wrote:

On 17 May 2021, at 06:19, Peter Firmstone <peter.firmst...@zeus.net.au> wrote:


In versions of Java, without a security manager, the third party service 
provider will have AllPermission, and the user will have restricted permissions 
(if we still have some form of user Permission based access control).
Follow this issue: https://bugs.openjdk.java.net/browse/JDK-8266592


Thanks for the link, I am aware of it.



So basically we might as well remove all access control completely and say that 
all users and all code is completely trusted,
All users — no, and at this point I’m starting to think that, rather than 
trying to understand
the direction proposed here, which is ultimately meant to help make Java *more* 
secure, you’re
trying to intentionally misunderstand and/or misrepresent it.

I understand the direction and the reasons for the decision, however we still need to consider how it will impact those who utilise it, and I'm sure more examples will come to light in time.

In my case, yes of course it will be less secure, because I'm using the stack context to manage access decisions for remote service identity.   These service proxy's now have some very limited permissions, in future their access will be completely unrestricted.   It is a foundational feature, it has a significant impact on those who adopted it.




It does appear that a side effect of JEP 411, perhaps even an unintended 
consequence, will be to limit Java to trusted networks with one administrator.  
It is most certainly appears to be a single JVM focused change, or a system 
controlled by one administrator.
Absolutely not. 99.99% of secure distributed systems in the world, written in 
Java or not,
do not use Java’s Security Manager, and a great many of them mix of Java and 
other runtimes.

You might have a point, though, that the current direction does not try to 
tailor a specific
solution to distributed systems made *only* of JVMs, and, because systems are 
not controlled by
one administrator, and because many are polyglot, mixing services running on 
different runtimes,
this is very much the right direction to go. You, on the other hand, seem to be 
focused on
“Java only” systems.

This is an existing system, your arguments are not relevant as the cost of rewriting millions of lines of code is prohibitively expensive.

Services written in other languages may be providers of services, however other language runtimes may not be consumers of services because most lack dynamic class loading or dynamic fine grained access control.   The JVM is required to allow services to be agglomerated into a system.

My point is that there will be no restriction on the services themselves in the JVM consuming and using the services.  Currently service proxy's are only allowed to contact their originating server and negotiate a few required permissions for their operation.  In future versions of Java without a SecurityManager, they will have no restrictions at all.




Newer versions of Java will of course be less secure without access controls 
and unsuitable for use in a distributed system that involves more than one 
administrator.
Of course not.

Yes, it is the case for software that was designed to use the SecurityManager.   We need to be honest about the impact, yes I understand SecurityManager will be removed, however telling developers their EXISTING software is no less secure is inaccurate.



I realise you’re trying to paint a picture as if the removal of Security 
Manager, a barely used
component, would adversely affects Java security — contrary to the opinion of 
security experts — b
ut the fact is that the vast majority of Java systems today already use other 
security
measures, including sandboxes. I don’t know if you actually believe this, in 
which case you
misunderstand the proposal, or don’t believe it but think that such claims 
would sound convincing
to others.

It is true that we’re saying to those few remaining people who still depend on 
Java’s internal
sandbox to do what most other people have already done and rely on other 
security measures, and so
*if they do not* their systems will be less secure, but, of course, this is not 
what’s being
recommended. All this JEP is saying that the JDK itself will not, in the long 
term, provide this
particular fine-grained sandbox, and that remaining users should switch to 
other sandboxes available
to Java applications.


Barely used or not, it is only fair to acknowledge the impact on those who do use it.

Are you a security expert?  Is this your opinion as a security expert?

I don't need a sandbox, I need access control.

Your proposal is quite plain and simple, I don't see how it can be misunderstood, you propose to remove the ability to make stack based domain, access control decisions.

These sandboxes you talk of, I have not seen any practical workable solutions, I'm assuming your talking about Intel architecture based Virtual Machines that host an OS, they don't provide dynamic access decisions for Java?  Yes I acknowledge they can do static, but not dynamic performant access decisions.

I suspect either you don't understand what I'm talking about, or you simply don't want to acknowledge it.  I have provided links to fully functional software that utilises SecurityManager.

We should just say, that there is no future migration path for existing Java applications that require fine grained access control.

It's quite simple really, just be honest.

I've accepted OpenJDK is doing this, I just want you to acknowledge that Java in future will be less capable in this respect than the Java of today, so that people who might be impacted take it seriously.

What I intend to do about it, is contribute to existing versions of Java to prolong their life.

I'm looking for acknowledgement, so that the importance of maintaining Java 17 for a long time is understood for existing applications that use fine grained access control, which have no other alternatives can continue to remain functional and secure, up to date secure.

Hand waving brush off comments don't provide practical workable solutions.

I think for starters we should discourage those who require fine grained access control from using newer versions of Java that don't implement it.   Then it would be nice for those who would like to help maintain an existing version of Java that does support fine grained access control to do so as a part of the OpenJDK project.

I don't understand why this is so objectionable?

It really doesn't matter what 99.99% of other people are doing for the 0.01% that use it.  You conveniently plucked these figures out of thin air, a word of advice, it lessens the credibility of your arguments.



— Ron

--
Regards,
Peter Firmstone

Reply via email to