Let SVN do the merge, your changes might be extensive but I doubt there has been much movement in those files since you checked them out. So the merge will probably be more of a replace.
I'm hoping to get some coding done in the next few weeks - at last! So we might have enough changes soon for a release. Keep up the good work, Peter. Sent via mobile device, please forgive typos and spacing errors. On 10 Jan 2012 06:20, "Peter" <j...@zeus.net.au> wrote: > The new security manager and policies are almost ready to merge back into > trunk. > > Any svn merge tips would be much appreciated. > > First, I'd like to move some policy implementation classes that are at > present public in org.apache.river.*, into package private net.jini.* > namespaces, to reduce the public api. > > Not all of the code will be included, classes, like ConcurrentPermissions > (and all policy cache associated classes), even though far better than > Permissions, will be discarded, as recent developments (eliminating policy > cache) have made them redundant. > > DelegatePermission is still there, designed to work with delegate wrapper > classes that encapsulate sockets and and file handles, to enable removal of > temporarily granted permissions. > > Example: A downloaded proxy is granted a SocketPermission to contact its > server, if during deserialisation, the proxy modifies some public static > fields (java.xml.* vulnerabilities ring a bell?) by replacing some platform > classes with its own, it leaves some of its own proxy code on the stack > context. The proxy after being downloaded is found to be untrusted and > discarded. > > Every time the object the proxy has injected into the platform is > accessed, it steals information and sends it back to its originating host. > > If a DelegatePermission(SocketPermission p) is granted instead, the proxy > recieves a socket that denies access when the permission is revoked, when > trust can't be verified. > > The proxy could still perform a denial of service, by causing an out of > memory error during deserialisation. > > DelegatePermission can also be used to grant temporary or limited access > to Principals, eg after downloading 1GB, downloads are revoked and > regranted at the next monthly cycle, something sililar could be used to > limit writes to the file system. > > Obviously you'll need to buffer the input or output streams, to balance > how often checks are performed, that is, if you choose to utilise it. > > A DelegateSocketFactory that can be used to encapsulate existing > SocketFactory's will be released at a later date to enable > DelegatePermission controlled streams and channels. Note any > ProtectionDomains with SocketPermission will still have access to the same > channel. > > DelegatePermission is intended to be a dynamically or runtime granted > Permission. > > To function it requires a DelegateSecurityManager, each stack context > domain must have permission either for the DelegatePermission or it's > representative Permission. > > This was one motivation for a securitymanager cache, it needed to be as > fast as possible and non blocking, unlike policy cache. > > Using delegates is of course optional. > > The other thing I was toying with was using deny as well as grant in > policy files: > > Where denials would be checked first by the policy prior to checking > grants: > > So you could deny a proxy access to the local network, whilst granting it > access to the entire internet, with two simple policy statements. > > Or you could allow access to a directory, but deny access to a user policy > file contained in that directory, for principal based grants. > > The syntax would be identical to a grant statement in policy files, except > deny replaces grant. > > But then I realised despite the advantages, it adds complexity, because > the deny statement could have unintended scope narrowing / widening > consequences and Permissions like SocketPermission don't work as well as > intended, it would be simpler to dynamically grant Permissions on an as > needed basis. > > So any last remaining traces of deny must be removed. > > Instead of using deny in policy grants, I figure that proxy's can > optionally include permissions.perms files under META-INF in their jar > files as a hint to clients. By using the least priviledge model and > limiting the GrantPermissions given to Principals administrators can limit > Permissions users can grant to proxy's. > > The proxy developers would need to be aware they might not be granted all > the permissions they'd like and offer reduced functionality by catching > SecurityException. > > Regards, > > Peter.