JEP 411, removal of finalizers, a path forward.
Peter Firmstone
peter.firmstone at zeus.net.au
Thu Aug 5 11:38:21 UTC 2021
I'm grateful for everyone's ideas and feedback, in the coming days &
weeks I'll put together some documentation to summarize and put some
time into some proposals, I have a lot of experience with the SM
infrastructure and its inner workings, having had to work around it's
pitfalls.
Watch this space, I'll post a link when ready.
Regards,
Peter.
On 5/08/2021 7:27 am, Sean Mullan wrote:
>
> On 8/3/21 8:10 PM, Peter Firmstone wrote:
>> On 4/08/2021 2:40 am, Sean Mullan wrote:
>>
>>>
>>>
>>> On 8/2/21 8:28 PM, Peter Firmstone wrote:
>>>> In JGDMS without SM, at least the following must be addressed to
>>>> maintain security:
>>>>
>>>> 1. TLS and Kerberos connections cannot be established. (My
>>>> software is
>>>> littered with doPrivileged calls that preserve the Subject, we
>>>> don't
>>>> have anon TLS connections, we require client certificates).
>>>
>>> As mentioned several times, this use case will be preserved and is
>>> already covered in JEP 411:
>>> https://openjdk.java.net/jeps/411#subject-doas
>>
>> Yes, that's true, a secondary consideration is the amount of work that
>> will be required to support different versions of Java, no doubt
>> reflection will be helpful, to check for the existence of the new
>> methods. Last time I checked, I have around 1,000 locations in the
>> code that will require changes. My motivation for mentioning it was to
>> highlight the benefit of reusing existing methods, which currently
>> provide this functionality.
>
> This is a case similar to AccessController.doPrivileged where we could
> potentially keep the existing APIs in place for a longer time period
> until such time the compatibility risk is low and
> applications/libraries have had ample time to convert to the new APIs.
> See the paragraph about degrading APIs in JEP 411:
> https://openjdk.java.net/jeps/411#Description
>
> As an interim step, the existing APIs could be adapted such that they
> simply call the new APIs which will likely use a different mechanism
> to transfer the Subject across API boundaries (ThreadLocals or
> eventually Scope Locals, when they arrive).
>
>>>> 2. All remote connections are authorized to load classes.
>>>
>>> Not sure why you can't do something with a custom ClassLoader that
>>> only loads classes for authorized users.
>>
>> Interesting, what do you have in mind?
>
> I don't know, it was mostly just an idea I am throwing out based on
> your #2 statement above. I don't have the time to fully understand
> your model, but more simply if you know who is authorized and who
> isn't, it seems like you would have direct control over what the users
> are authorized to do and instead of relying on the Security Manager to
> catch operations already in motion, you could prevent them before they
> even occur. This seemed like one of those cases.
>
>>>> Having established that OpenJDK is not yet willing to compromise, I
>>>> have
>>>> been attempting to create an authorization layer using Agents, so
>>>> that I
>>>> can restore perimeter security following the removal of SM and support
>>>> future versions of Java. It is my hope that either I will be
>>>> successful in recreating an authorization layer, or that enough people
>>>> come forward and OpenJDK decides there are enough affected
>>>> developers to
>>>> find a compromise that either makes migration practical, or less
>>>> expensive.
>>>
>>> You may have some interesting ideas, but in my opinion you have not
>>> presented them in a clear and easily digestible manner, and your long
>>> emails are time consuming to read, repetitive and often diverge into
>>> rants. (Keep in mind there are many people on the jdk-dev alias, and a
>>> lot of them may not care about this topic). It is to the point where I
>>> only skim your emails quickly. I would take the time to write up your
>>> ideas in an external place. It may not go anywhere, but at least you
>>> would have a single place where your proposal, experiments, etc are
>>> documented.
>>
>> It's a two way street, I'm currently penetration testing OpenJDK dev's
>> to discover their pain points with SM architecture, as they haven't
>> documented them in JEP411. When I am sure I have discovered your pain
>> points, I plan to document a proposal. There's no point writing
>> something up that address the wrong pain points.
>>
>> On that topic, I think for historical purposes, JEP 411's wording could
>> more accurately reflect the experiences of developers who overcame the
>> shortcomings that beginners experience with SM. JEP 411 does well to
>> document beginners experiences when first attempting to use SM, however
>> I think this unfairly penalizes the original authors, history should
>> look more kindly on their achievements. SM is a great achievement that
>> stood the test of time for over 20 years, and no one else has succeeded
>> at this task, it's not perfect, but it works well for those who are
>> using it to it's full potential. It's association with Applets and
>> their use of ClassLoaders as a weak form of isolation, and the resulting
>> permission sprawl that eventuated as band-aids to each vulnerability, is
>> unfortunate.
>
> I don't disagree that the SecurityManager was a significant
> achievement. But I think JEP 411 presents a fair picture of how it
> played out over the years, and captures the main issues that most
> users and developers faced when trying to use or deploy it.
>
> --Sean
>
More information about the security-dev
mailing list