|
|||||||||||
|
Problems with most web app auth schemes
From: Kevin Spett <kspett(at)spidynamics.com>
Date: Fri Jul 25 2003 - 16:37:39 EDT
Using a cryptographic strength (in terms of predictability and size) value for a session id over an encrypted connection is pretty secure. You can make this even more difficult to attack by incorporating information such as the client's IP address, various headers, etc into the session id. In the end, you can do a good job making it difficult to pull off session hijacking attacks. In a practical sense, this is effective. A lot of effort has been spent designing effective authentication systems. It's dissapointing to see that this knowledge is not being applied in fields such as web security that could benefit from it. Guides to web app development rarely if ever make mention of what makes a quality authentication system. More typically, they show you how to store and transmit passwords without hashing, how to use session IDs that were issued without SSL, etc. The future of development platforms such as .Net and J2EE will likely have an impact on how authentication is performed in most applications. Fewer and fewer people are rolling their own session classes. Most people will use whatever is provided to them by a major vendor such as Microsoft or Sun. If they decided to provide their users with easy ways of implementing good security procedures, it could work out nicely. If they continue to use sub-standard procedures, or mess up in their implementations, we'll wind up with a whole lot of vulnerable applications.
Kevin Spett
Shameless plug: If you're going to be at Blackhat, come check out my
presentation on using Java decompilation to find vulnerabilities. I'll be
demonstrating how it was used to find a critical vulnerability in BEA
Weblogic.
All, I have a question on how people are handling cookie stealing and session segregation. For example, it is possible to use session cookie information on multiple systems for most (all?) web applications I know of. Here is a scenario: When a user logs in he is assigned a BLAH_SESSIONID cookie which serves as an authorization mechanism in the application. The application does not associate the cookie to any session-specific information (e.g., source IP address), so another user can also use the BLAH_SESSIONID cookie to access the same information (over a different TCP/IP session) that the legitimate user can. If an attacker obtains, or guesses a valid BLAH_SESSIONID cookie for an active session, he can use it without the user's knowledge. For example, I was able to execute the following command using an BLAH_SESSIONID that was obtained from another session: Command on Linux box: # curl -b "BLAH_SESSIONID=0000FDHTNLVY5WX" https://somesite.com/App/Function? Returns the page: (some portion of the returned page) Historically I have believed that having the application associate the BLAH_SESSIONID session cookie and its associated privileges with a specific SSL session or source IP address would prevent this session stealing. But recently I have been told that this solution does not work because of the dynamic IP nature of MANY ISP's and the disassociation of SSL/HTTP. I would like to know what others are doing to solve this problem, or if they are just not solving it at all. Thoughts and comments are appreciated... Phil Received on Sat Jul 26 09:31:40 2003 This archive was generated by hypermail 2.1.8 : Wed Aug 23 2006 - 14:07:54 EDT |
||||||||||
|
|||||||||||