|Subject:||Protecting system properties (was: Re: [jira] Commented: (DERBY-1387) Add JMX extensions to Derby)|
|From:||John Embretsen (John...@Sun.COM)|
|Date:||Feb 7, 2008 9:03:46 am|
Daniel John Debrunner wrote:
Rick Hillegas wrote:
Thanks for those experiments, John. When I boot the network server, it installs the default Derby server policy. Even then I can still click through the system properties via the Runtime MBean. This surprises me because the default policy only grants permissions to the Derby jars.
I would guess the system jmx beans are jre system code and thus granted all permissions.
Right. And fiddling with the system's default security policy for libraries from the Java platform (java.*, javax.*) is not something I recommend. I am guessing here, but I have a feeling that at least 99.9% of our users will accept this risk instead of going that route.
There are most likely other ways to deal with this particular source of exposure, by jumping through a number of hoops here and there (e.g. by disabling or somehow modifying the RuntimeMXBean whenever Derby boots), but do we really want to go that way?
There may be a "gazillion" other ways to view system properties of a given JVM today or in the future - and we would need to keep up with that...
In my opinion, once you choose to expose your application to other, potentially harmful, users through JMX or other means, you necessarily need to deal with a potentially higher risk level.
We, as Derby developers, should strive to keep the sensitivity of the information stored as (derby) system properties to a minimum. For example, we should recommend against defining usernames and passwords in cleartext as system properties (especially in scenarios where remote JMX is enabled), and should provide better alternatives to the users.
It is, as Rick mentioned, hard to determine the value of a given property in the hands of an malevolent user, but I am inclined to think this is something we could live with. We cannot protect against everything. Does anyone know how other comparable systems handle this issue?
Anyway, just my 2 cents...