Ethical Hacking Learn to find vulnerabilities before the bad guys do! Gain real world hands on hacking experience in our state of the art hacking lab. Course designed and taught by expert instructors with years of penetration testing experience. 12 student maximum in every class. Certification attempt included in every package. | Computer Forensics Training at InfoSec Institute Gain the in-demand skills of a certified computer examiner, learn to recover trace data left behind by fraud, theft, and cybercrime perpetrators. Discover the source of computer crime and abuse at your organization so that it never happens again. All of our class sizes are guaranteed to be 12 students or less to facilitate one-on-one interaction with one of our expert instructors. |

| Subject: | Re: Whitepaper "SESSION RIDING - A Widespread Vulnerability in Today's Web Applications" |
|---|---|
| Date: | Mon, 20 Dec 2004 17:00:53 +0200 |
SESSION RIDING - A Widespread Vulnerability in Today's Web Applications http://www.securenet.de/papers/Session_Riding.pdf
Nice work. I suspect this vulnerability is quite common and dangerous.
In Section 6.1 ("Countermeasures" / "Use secrets"), you seem to
concentrate on secrets that are explicitly stored in the server-side
session record. But one can also use a secret that is computed on-the-fly:secret = SHA1(site_secret, session_id)
or, in the absence of explicit sessions:
secret = SHA1(site_secret, user_id, user_password)
Above, site_secret is a fixed secret random string (160 bits of entropy) that is specific to this site.
Since this does not require changes to the database schema, it may be easier to apply at the critical points of existing systems.
Due to site_secret, an attacker cannot compute the secret even if he knows session_id (say, due to an XSS attack). And importantly, the presence of site_secret prevents the attacker from recovering session_id via a dictionary attack if the user accidentally publishes a URL containing the secret.
To minimize URL ugliness, you can safely truncate this secret to, say, 16 hexadecimal characters (64 bits). In fact, often even 10 hexadecimals would suffice, since testing each guess for the secret requires triggering an HTTP request *by the user's browser*, so the attack cannot be effectively parallelized.
It's important that site_secret is specific to the site, not the server. If more convenient, one can use just one server-wide secret, and redefine:
site_secret = (server_secret, site_identifier)
where site_identifier can be, for example, the canonical hostname.
Eran
| Previous by Date: | How to set setcookie-2 for port option., Senthilkumar Balasubramanian |
|---|---|
| Next by Date: | RE: Whitepaper "SESSION RIDING - A Widespread Vulnerability in Today's Web Applications", Evans, Arian |
| Previous by Thread: | Re: Whitepaper "SESSION RIDING - A Widespread Vulnerability in Today's Web Applications", Sverre H. Huseby |
| Next by Thread: | Re: Whitepaper "SESSION RIDING - A Widespread Vulnerability in Today's Web Applications", Shade |
| Indexes: | [Date] [Thread] [Top] [All Lists] |