[jboss-as7-dev] [JNDI] Secure the access to (local) JNDI tree through java permissions?
Jason Greene
jgreene at redhat.com
Sun Nov 4 08:54:00 EST 2012
SRT didn't think this was needed because we no longer allow remote writes to JNDI.
Sent from my iPhone
On Nov 2, 2012, at 8:57 AM, Anil Saldhana <Anil.Saldhana at redhat.com> wrote:
> The org.jboss.as.naming.JndiPermission was introduced in AS5 mainly to
> monitor the CRUD operations on the JNDI when running under the Java
> Security Manager. This was done as part of Common Criteria Evaluation.
> We need to bring this back for JNDI operations in AS7.
>
> On 11/02/2012 04:40 AM, Lukas Krejci wrote:
>> Hi Darran,
>>
>> seeing you as the assignee of https://issues.jboss.org/browse/AS7-3407, would
>> you be able to comment on the problem I outlined below?
>>
>> Your help is very much appreciated.
>>
>> Thanks,
>>
>> Lukas
>>
>> On Friday, November 02, 2012 13:16:15 Jaikiran Pai wrote:
>>> I don't think relying on EJB container or other containers to do the
>>> necessary checks is always going to work. You never know what gets bound
>>> to the JNDI and if it doesn't use the JndiPermission check, then that
>>> JNDI bound entry can get exposed to the client.
>>>
>>> There appears to be a JIRA for this, although I don't know what's being
>>> planned in there https://issues.jboss.org/browse/AS7-3407
>>>
>>> -Jaikiran
>>>
>>> On Thursday 01 November 2012 10:07 PM, Lukas Krejci wrote:
>>>> Hi,
>>>>
>>>> we're in the middle of porting RHQ/JBoss ON from JBoss AS 4.2.3 to JBoss
>>>> AS
>>>> 7.1.1.
>>>>
>>>> Among many other things we offer the ability to run user scripts (using a
>>>> javax.script.ScriptEngine) inside the server. The scripts can access our
>>>> APIs to perform various functions. But since they're essentially 3rd
>>>> party, we want to execute them in a secured fashion. For that we run RHQ
>>>> with a security manager (allowing all permissions by default) and when
>>>> executing a script we do that in a separate access control context that
>>>> limits what the code being executed can do (like it cannot shutdown the
>>>> server using System.exit(), etc).
>>>>
>>>> Among other things, we don't want the scripts to access our local EJBs
>>>> because that would mean they would be able to access unsupported and
>>>> possibly insecure APIs.
>>>>
>>>> When RHQ ran on AS4, we solved the above problem by having our own
>>>> IntialContextFactoryBuilder that essentially wrapped any
>>>> javax.naming.Context in a wrapper that would check for a certain java
>>>> Permission on lookup. All the "normal" code would have it, but the access
>>>> control context the scripts run in would NOT have it. This would stop any
>>>> attempt to do a (local) JNDI lookup with a SecurityException unless the
>>>> JNDI lookup was performed using our "gateway" (that "published" only
>>>> secure remote APIs and called them in a privileged action).
>>>>
>>>> Now with AS7 I don't think the above is possible anymore. There is a
>>>> org.jboss.as.naming.JndiPermission that would be ideal for our purposes
>>>> but it is not being enforced when doing JNDI lookups of EJBs (as far as I
>>>> could debug this is due to using ServiceBasedNamingStore for looking up
>>>> EJBs, which doesn't do the check for the JndiPermission).
>>>>
>>>> How would you go about implementing something like above? Would it even be
>>>> a viable approach to take in AS7?
>>>>
>>>> (One of the obvious solutions would be to implement the security check as
>>>> an interceptor on the EJB calls but we tried to avoid that because that
>>>> would be done on EVERY ejb call all the time, while the security check
>>>> during the JNDI lookup phase would be done only once).
>>>>
>>>> Thanks,
>>>>
>>>> Lukas
> _______________________________________________
> jboss-as7-dev mailing list
> jboss-as7-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/jboss-as7-dev
More information about the jboss-as7-dev
mailing list