[Opensource] Future directions Security follow up...

Michael Rimov rimovm at centercomp.com
Tue Nov 5 17:13:58 PST 2002


Just to followup on the issue of security as discussed with Larry et. 
al.  Here's what we're looking at:

RE: Cookies

Default Security:
1 - Strengthen the encryption of the password cookie. [Provide a random 
number generator to generate a good random key for the sysadmin to put in 
expresso-config]  For those systems, that use login cookies, this will get 
'decent' default security. [AES with a full key is the current government 
standard for encrypting non-classified sensitive data]  I will investigate 
preventing replay attacks.

If SSL is enabled for the system. [Next level up of security]
2 - If cookies are enabled, then CheckLogin will redirect to an SSL session 
to grab the login cookie which is marked 'secure', so it will only travel 
over the wire in an SSL session.  This will make it much harder to 
intercept the cookie through either packet sniffing or XSS attacks.

Final level: No login cookies
Not only will Login controller NOT set any login cookies, checkLogin will 
not accept any login cookies as well.  This forces the user to present 
their credentials with each visit to the site.

RE: Password in session

In general we're looking at integrating with JAAS, so most of the details 
will be dependent on the JAAS implementation:

Default:
JAAS will still contain the user's password in the Principal's 
credential.  Unless you use a 3rd party authentication server, this is the 
way it'll have to work to be able to forward on login requests to remote 
servers on behalf of the user, and it appears this is the way that JAAS was 
designed to work.  This isn't necessarily serious in that the session isn't 
easily crackable externally, only through a disgruntled sysadmin (maybe 
could crack it depending on the session tools available), or a disgruntled 
programmer(could get it with a fair amount of ease).

For higher security:  Since we're going to integrate with JAAS, that'll 
allow us to integrate with 3rd party servers such as a remote Kerberos 
server, or Microsoft NT authentication.  If we do that, then the password 
is stored in memory long enough to pass it onto the authentication 
module.  Once that is done, we receive back an authentication token that we 
store in the session as the Principal's credentials.  Obviously this is 
better from a session standpoint since the token will expire after a given 
period of time.  If we need anything loaded, based upon the user's 
password, we use it upon initial login and discard the password at that point.

Does this make sense to everybody?
						-Mike






More information about the Opensource mailing list