[Owasp-delhi] SSL Broken..

lavakumar.kuppan at rbs.com lavakumar.kuppan at rbs.com
Mon Jan 19 02:34:41 EST 2009


Hi Gunwant,

Thanks for bringing up this topic, can see that it has tickled quite a few 
brains in the list already ;), prompting some really intelligent ideas and 
arguments.
I was on vacations and missed out on all the fun here, but its never too 
late so here is my humble opinion.

There are two very important factors that have to be considered here:

1) Why is a session ID required.
2) What is the possibilty of some one with sniffing capability to 
intercept and manipulate the traffic.


1) Why is a session ID required
 I believe sessiond IDs are used to avoid connecting to the DB each time 
and validating the user's password, they are used to improve efficiency.
Now in the solution that you have suggested, the server has to fetch the 
user's password for each request which defeats the whole purpose of 
maintaning session IDs.
Since we are anyway reffering to the password for each request, I would 
like to think that we can authenticate for each request with the 
salted-hash technique you suggested in your december OWASP talk, provided 
once a salt is used the server discards it and issues a new one.
Ironically you had already suggested a solution and then asked the 
question, wonder if you were just checking if everyone understood your 
talk properly ;)

2) What is the possibilty of some one with sniffing capability to 
intercept and manipulate the traffic.
As someone who has done quite a bit of sniffing on customer networks 
during pentests, I think that someone who is capable of sniffing would in 
all probability also be capable of intercepting and manipulating the 
traffic between the client and server. There might be exceptions but they 
would be uncommon.
Any techniquie which enforces some trust on the client-side logic now gets 
defeated.
For your salted-hashning technique or the new techique there is to be a 
lot of client side JS code which has to create the salted hash and send it 
to the server. The attacker would just intercept this message and replace 
your JS with another JS which does every thing like the original JS but in 
addition steals the user's clear text password and appends to the request 
which the attacker can now get by viewing your request.
Once this happens the entitre security system is defeated as its so 
closely attached to the user's password.
So in my opinion once someone is able to intercept a clear-text traffic he 
could directly or indirectly bypass most restictions enforced.

The thing that differentiates SSL from the suggested approach is the use 
of Server certificates which establishes authenticity, unless we can 
figure out a way to do that our confidentiality and integrity solutions 
might fail.

Dont cosider thick client approach like java applets as reverse 
engineering is a possibility.

PS: OK, I have not suggested any solution,  am a pentester what do you 
expect :P

Thanks and Regards,
Lavakumar K
Penetration Tester - Global ISA



"Gunwant Singh" <gunwant.s at gmail.com> 
Sent by: owasp-delhi-bounces at lists.owasp.org
01/16/2009 11:06 PM

To
owasp-delhi at lists.owasp.org
cc

Subject
Re: [Owasp-delhi] SSL Broken..






Hi,
Ok, let me elucidate the workings of the technique I was talking about.

But before that I just want to shed some light on a few things so no-one 
comes again questioning to me about these and start some endless argument.

- The e-commerce site I was talking about, I never said that they are only 
using the technique I am going to discuss. They might be using other 
techniques for their protection. What I meant was I've not seen/heard 
anyone else using this technique. That doesn't mean that they are only 
using this technique for their protection. Every giant incorporates 
multi-tier security for their resources.  I am not sure what exactly they 
are using besides this technique as Nobody reveals that.  I questioned 
someone on a forum, he came up with this technique, I studied, checked 
this on their documentation page, discussed with some people, discussed 
with some more, argued with even more and now I am here. I am looking for 
some feedback from you all. Just let me know what ever you think is wrong 
with this. Anyhow the question is not that whether they are using it or 
not but the question is 'How good is the technique?'

- Please don't misinterpret my statement. I am not saying 'Don't use SSL'. 
SSL is definitely a protection mechanism for "Now" if we use it 
appropriately (CA signed certificate with a well-tested, well-reviewed 
implementation). Use SSL till someone finds some exploit *practically* not 
theoretically. This whole discussion is based on a research question so 
I/we can get a *feasible* working solution for this (may-be-a-future) 
problem. If you are not interested in discussing please do not comment. 
And please do not envisage what I am not saying.

So here is how it works.

No SSL. All traffic in clear text.
Initially we need to communicate an OOB password/code/nonce (whatever you 
call it) to the client - only *once* not each time.

1. The client initiates a connection request to the server. As a result, 
server will initiate a handshake process to synchronize the time-stamps 
between the client and itself. Then the server will analyze tolerance time 
of packets leaving the client workstation till it reaches the server. The 
tolerance time is configured so to manage slow hosts or slow traffic. In 
plain words, server synchronizes date and time (in seconds, milliseconds 
or even nanoseconds based on the criticality of the application) with the 
client.
2. At the client side: the message, instantaneous time-stamp and the 
password are concatenated and hashed via SHA-1/SHA-256, whatever one 
wishes. This ensuing hash is combined with the username to form an 
authentication header and sent to the server. 
3. At the server side, the server sees the username and perceives which 
user is trying to authenticate. Based on the tolerance configured 
initially at the handshake time, it picks the time-stamp from its own 
clock and using the password and the message it generates the hash in the 
same way as it was done at the client side.
4. If the hash matches it generates a Session ID and maps it to the 
username of the user. This Session ID will be sent from the client to the 
server along with the computed hash (which is different for each request - 
see next Step) 
5. Now if the client sends another request, it appends and then hashes the 
message, password and the time-stamp (which will be apparently because of 
the different instantaneous time-stamp i.e. date and time). This resulting 
string is sent to the server along with the Session ID assigned to the 
user earlier. The resulting string contains a different hash as the time 
has changed. This will be validated at the server the same way as in Step 
3.
Now how can an adversary exploit this scenario? What I think of are two 
ways:
1. Either he will capture one of the hashes and try to predict the next 
hash by brute forcing different time-stamps.
- But this can not be possible. He doesn't have the password to generate 
the hash.
2. What if he captures a series of requests and responses and replays them 
back to the server at a later stage. 
- This can't be possible either. In order to interact with the server, one 
needs to handshake so to synchronize itself with the server's clock. The 
attacker would not be able to synchronize because he would not be able to 
synchronize the *past-timestamp* (in the captured traffic) with the 
server's current time. 
3. Lastly for the newbies, what if he captures the Session ID.
- But he would not be able to produce the matching Hash for the request, 
so no luck.

A few things to contemplate:
1. This will be considerably be CPU intensive but can be acknowledged if 
compared to the processing cycles SSL takes.
2. Time synchronization can be complex. I have no idea how to do that. 
3. Please provide your 
feedback/fury/antagonism/annoyance/appreciation/whatever. Hope I explained 
this in a very straightforward way.
Thanks.
Gunwant
 


On Fri, Jan 16, 2009 at 4:26 AM, Plash Chowdhary <plash.chowdhary at tcs.com> 
wrote:

Gunwant, 

I will be interested to know kind of soltutions are being used. 
SInce you are talking about **Time stamp**(in clear text will be 
perdictable, specially if a client side algo is being used) <some random 
number in hidden field with every request,<unique captcha with every 
request (this will be interesting)  can be a case but they will be not as 
roboust  as out of band.. 
some how with Time stamps only thing that rings bell is CRYPTOGRAPHY : D 
(PKI??) 

I will be really surprized if that organization is not using SSL from a 
Vendor. (as you said its an e commerce site) 

and anyways i wont be using HTTPS on public content of my site and will 
switch to HTTPS session only when needed (IDEALLY) 


lemme know your thoughts 

Regards 
Plash 





"Gunwant Singh" <gunwant.s at gmail.com> 
01/15/2009 12:30 PM


To
"Plash Chowdhary" <plash.chowdhary at tcs.com> 
cc
owasp-delhi at lists.owasp.org 
Subject
Re: [Owasp-delhi] SSL Broken..








Plash, 

Thanks for the idea. Please don't take my talks as overstatements, I just 
wanted to have some innovative ideas from you guys.

Many organizations implement session mechanisms without using SSL. As a 
matter of fact these are not the conditions that I have set. There are 
many scenarios where using SSL is unworkable and in order to provide 
protection, there are solutions. 

Also, it becomes more relevant when people are trying to prove the 
weaknesses of SSL. Not to forget, facts say that most organizations who 
use SSL, use self signed certificates rather than a CA sign it. 

For sessions on non-SSL, there are many undocumented solutions which can 
be put into practice but such solutions needs to be well-reviewed and 
well-tested before they are implemented. I have come to know about one of 
the methods implemented by one of the top e-commerce portal giants. This 
solution is a bit tough to understand and subsequently implement it. 
Before I discuss it on the mailing list, I need to make sure that I 
understand it well. The only thing I can share at the moment is, it uses 
time-stamps. Hopefully, I would be discussing this proposition in detail 
in the upcoming Delhi Chapter meeting this month.

Sorry if my talks were exaggerated. I still seek more ideas on the same 
question if someone is willing to share. 

Many thanks. 

On Thu, Jan 15, 2009 at 11:29 PM, Plash Chowdhary <plash.chowdhary at tcs.com
> wrote: 

Gunwant,, 

Yes impractical "Off band validation" for each request in the conditions 
you have set. Now either you come up with a solution or im implimenting 
SSL : ) 

Regards 
Plash 

"Gunwant Singh" <gunwant.s at gmail.com> 
01/15/2009 10:27 AM 


To
"Plash Chowdhary" <plash.chowdhary at tcs.com> 
cc
owasp-delhi at lists.owasp.org 
Subject
Re: [Owasp-delhi] SSL Broken..










I would happily accept what you say if you say how it protects.

Tell me *how* would a sniffer miss your validation code on an unencrypted 
channel. We should talk about mitigating not minimizing.

Oh ! unless you are saying, a different off band validation code is sent 
for *each* request - then it is possible but it is impractical even in 
high risk applications.

On Thu, Jan 15, 2009 at 9:41 PM, Plash Chowdhary <plash.chowdhary at tcs.com> 
wrote: 

It does Gunwant, Use long one time off band validation....and keep a short 
TTL it will minimize the risk of relpay,.... 

"Gunwant Singh" <gunwant.s at gmail.com> 
01/15/2009 09:25 AM 


To
"Plash Chowdhary" <plash.chowdhary at tcs.com> 
cc
owasp-delhi at lists.owasp.org 
Subject
Re: [Owasp-delhi] SSL Broken..












That doesn't affirm protection against replay attack, dude!
In the transit, anyone can see your validation code...
Even if you hash/encrypt it, still it can used to replay the traffic...
this is vulnerable.. :)

On Thu, Jan 15, 2009 at 3:46 AM, Plash Chowdhary <plash.chowdhary at tcs.com> 
wrote: 

verify user offline.. send an sms(or similar) with a validation code(long 
randomly genrated  string) to the user everytime he logs in to validate 
and use it everytime a transaction (high risk) is done or role is 
changed.. best way still will be to use it over SSL and use digital 
signatures 

Regards 
Plash 

"Gunwant Singh" <gunwant.s at gmail.com> 
Sent by: owasp-delhi-bounces at lists.owasp.org 
01/14/2009 10:13 AM 


To
"Karthik Muthukrishnan" <karthik.muthukrishnan at tcs.com> 
cc
owasp-delhi at lists.owasp.org 
Subject
Re: [Owasp-delhi] SSL Broken..














Hi,

Thanks for your reply but that did not answer my question. You are telling 
me what I can use for protecting the credentials. I know what I can use, 
but just out of curiousity I want to know if I don't use SSL/VPN or any 
other network based protection, what else can be done on the application 
layer in order to protect the credentials. Please see the answers below.

On Wed, Jan 14, 2009 at 3:50 PM, Karthik Muthukrishnan <
karthik.muthukrishnan at tcs.com> wrote: 

> salted MD5 hashing protects the authentication credentials rightly from 
eavesdropping on the network. 
Salting is used to protect MD5 hashes from rainbow table attacks. 
Apparently Yes, although ultimately it protects authentication credentials 
only. Facts say the highest risk is eavesdropping if the session is 
unencrypted. 

> SSL does the same thing. 
Yes, SSL is used to ensure confidentiality and trust in the network 
communiation. Confidentiality (or prevention of network eavesdropping) is 
ensured by encryption. Trust is accomplished by Server and/or client 
certificates. 
I know what SSL does, but my question is something else. 

> However, in some scenarios SSL might not be feasible. For example, 
causing heavy load on the server or may be some applications don't support 
it, etc. 
In such cases SSL Accelerators are used. They are devices which can be fit 
into the architecture without changing the application or affecting the 
load on the application server. 
Again my question is something else. I know if SSL doesn't work, 
accelerators help expedite the processing. What I want to know is, if I 
"Do Not" want to use SSL what measures can be taken. 


> We can protect the authentication credentials using salted MD5 hashing 
or by using SSL. 
To protect authentication credentials in HTTP, we have to rely on SSL. 
Hashes are a secure (aka not in clear text) way to store authentication 
credentials. 
So you are proclaiming that we *have to* rely  on SSL- no other 
alternative. 
Hashes are also used in many applications for many different purposes 
besides authenticity and integrity. 


> In order to protect the Session credentials (Session ID, tokens, 
cookies, etc) on a non-SSL channel what measures can be taken? 
To protect either auth or session credentials we have to ensure 
confidentiality of the communication channel. If we dont use HTTPS, then 
VPN might be another option. While authentication credentials can be 
protected by some challenge handshake mechanism (similar to CHAP), we 
would need to protect session creds by encrypting the channel. 
I was asking that if we can provide some protection on the application 
level rather than on the network level. Besides SSL/VPN there are many 
options available for protecting the authentication credentials. I want to 
know (just out of curiousity) that how can we secure the session 
credentials on an unencrypted/non-SSL channel. I know this will take too 
much processing cycles, time synchronization, quantization in milliseconds 
even nanoseconds, affirmation of the key exchange, dynamic hashing key 
generation to mitigate replay attacks, and even more. 

I just want to know  if anyone has an idea on how it can be done if h/she 
is willing to share that would be really appreciative. Please make sure 
you understand what I am looking for.
No offence :)



Karthik 
=====-----=====-----=====
Notice: The information contained in this e-mail
message and/or attachments to it may contain 
confidential or privileged information. If you are 
not the intended recipient, any dissemination, use, 
review, distribution, printing or copying of the 
information contained in this e-mail message 
and/or attachments to it are strictly prohibited. If 
you have received this communication in error, 
please notify us by reply e-mail or telephone and 
immediately and permanently delete the message 
and any attachments. Thank you






-- 
Gunwant Singh 
_______________________________________________
Owasp-delhi mailing list
Owasp-delhi at lists.owasp.org
https://lists.owasp.org/mailman/listinfo/owasp-delhi

ForwardSourceID:NT00005236     
=====-----=====-----=====
Notice: The information contained in this e-mail
message and/or attachments to it may contain 
confidential or privileged information. If you are 
not the intended recipient, any dissemination, use, 
review, distribution, printing or copying of the 
information contained in this e-mail message 
and/or attachments to it are strictly prohibited. If 
you have received this communication in error, 
please notify us by reply e-mail or telephone and 
immediately and permanently delete the message 
and any attachments. Thank you






-- 
Gunwant Singh

ForwardSourceID:NT000052F2     
=====-----=====-----=====
Notice: The information contained in this e-mail
message and/or attachments to it may contain 
confidential or privileged information. If you are 
not the intended recipient, any dissemination, use, 
review, distribution, printing or copying of the 
information contained in this e-mail message 
and/or attachments to it are strictly prohibited. If 
you have received this communication in error, 
please notify us by reply e-mail or telephone and 
immediately and permanently delete the message 
and any attachments. Thank you






-- 
Gunwant Singh

ForwardSourceID:NT0000530E     
=====-----=====-----=====
Notice: The information contained in this e-mail
message and/or attachments to it may contain 
confidential or privileged information. If you are 
not the intended recipient, any dissemination, use, 
review, distribution, printing or copying of the 
information contained in this e-mail message 
and/or attachments to it are strictly prohibited. If 
you have received this communication in error, 
please notify us by reply e-mail or telephone and 
immediately and permanently delete the message 
and any attachments. Thank you






-- 
Gunwant Singh

ForwardSourceID:NT0000533A     
=====-----=====-----=====
Notice: The information contained in this e-mail
message and/or attachments to it may contain 
confidential or privileged information. If you are 
not the intended recipient, any dissemination, use, 
review, distribution, printing or copying of the 
information contained in this e-mail message 
and/or attachments to it are strictly prohibited. If 
you have received this communication in error, 
please notify us by reply e-mail or telephone and 
immediately and permanently delete the message 
and any attachments. Thank you






-- 
Gunwant Singh




-- 
Gunwant Singh
_______________________________________________
Owasp-delhi mailing list
Owasp-delhi at lists.owasp.org
https://lists.owasp.org/mailman/listinfo/owasp-delhi



This message (including any attachments) is confidential and may be privileged. If you have received it by mistake please notify the sender by return e-mail and delete this message from your system. Any unauthorised use or dissemination of this message in whole or in part is strictly prohibited. Please note that e-mails are susceptible to change. ABN AMRO Central Enterprise Services Pvt Ltd, part of RBS Group plc , having its registered office at Empire Complex, 414 Senapati Bapat Marg, Lower Parel (W), Mumbai - 400 013 , including its group companies, shall not be liable for the improper or incomplete transmission of the information contained in this communication nor for any delay in its receipt or damage to your system. ABN AMRO Central Enterprise Services Pvt Ltd (or its group companies) does not guarantee that the integrity of this communication has been maintained nor that this communication is free of viruses, interceptions or interference.

______________________________________________________________________
This email has been scanned by the MessageLabs Email Security System.
For more information please visit http://www.messagelabs.com/email 
______________________________________________________________________
-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://lists.owasp.org/pipermail/owasp-delhi/attachments/20090119/81e89472/attachment-0001.html 


More information about the Owasp-delhi mailing list