Crack in Internet's foundation of trust allows HTTPS session hijacking
arstechnica.com
arstechnica.com
See http://security.blogoverflow.com/2012/09/how-can-you-protect... for technical details.
This seems to be a very basic attack, wondering why this attack vector wasn't publicly known much earlier...
It works even when you have "passive observation". All you need is two things 1) to make the victim run your JavaScript, irregardless where you make your victim fetch and run your script. And 2) sniff his packets to see what is going over the wire. You can do both things very easily for example in a caffe on an open WiFi network. Or in a caffe with WPA2 where you and your victim are on the same wifi, using the same password from the caffe. (Arp poisoning your victim...)
Take the "you and victim are at secure wpa2 caffe", the bartender gives both of you the wifi password. You perform an ARP poisoning on your victim, now all his communication goes through your computer, you act as gateway for him. Now you have 2 from above. Then you can for example replace his request for a http://cdn.google.com/jquery.js with your own jquery.js spiced with this new CRIME fancy JavaScrip as well, in which you just create a lot of img elements with src set to say https://facebook.com. And so on as described in CRIME you can reveal the victims session cookie for example.
The tools to perform arp have been around since the stone age, the tools to serve your victim your own .js for some random request of his over http have also been around since the stone age. And now we have crime to reveal parts of the victims supposedly secure communication channel as well.
in hindsight everything looks very basic. If this was so simple, why didn't you come up with it?
Note that the article says that the vulnerability applies to TLS /or/ SPDY -- in particular, it sounds like TLS+DEFLATE sessions are vulnerable, even in the absence of SPDY.
2. User's browser cannot automatically request resources (e.g. via img src tag). Either user prefers to download images manually (e.g. as text-based browser allow) or because he has fine-grained control over his name lookups (e.g. a managed HOSTS file or authoritative nameserver on localhost). User request the resources he wants specifically (how many would deliberately choose to download an ad?). He does not leave download choices to browser authors and web developers.
3. User's browser does not advertise compression support. User does not allow web pages to issue HTTP requests e.g. via Javacript. User downloads JSON directly and parses it to obtain the desired resource URL's.
4. User has no desire to compress HTTP headers. User is not interested in SPDY.
What if someone has automated this sort of common sense approach so that it's so simple your grandmother would find it easy to use?
Would this make security consultants, browser authors and web developers upset?
Of course this works as long as the additional deceit doesn't defeat the advantages of compression and even then it still feels like security through obscurity.
Another option, a little trickier, is that you could take user-definable values (like cookies) and not compress them. I haven't looked carefully at DEFLATE, but in many other compression systems you can choose to simply not compress a short part of the stream. This could get complicated of course.
With your suggestion, the length of encrypted packages is f(x) + E, where E is a random variable (noise) that does not depend on x.
Because of that, an attacker simply has to repeat the attack sufficiently many times to gather statistics on package lengths until there is one value of x for which packages are clearly shorter on average than for the rest. This is very similar to the type of sampling you would do in a timing attack.
So your suggestion does make the attack slightly more complicated, but qualitatively, the system remains broken.
And TLS always seemed like a replacement for SSL, when what's really needed are _alternatives_ to the SSL model, not a GNU clone that proclaims it can do the same or better.
This is just my opinion. I apologise if it offends anyone.
Fortunately there are alternatives. You just have to look beyond the hype.
If it would make more sense, then s/protocol/implementation/g or whatever you need to do to make sense of this.
How ever you choose to frame it, the targets are TLS and SPDY.
It's quite possible to use a browser that supports neither. Indeed I'm using one right now.