Thursday | 8 January, 2009
LinuxWorld.com.au

An SSL vulnerability for the masses

Brian Hatch (IDG News Service) 22/08/2002 09:54:31

Those of you following the news have probably heard about a recent SSL authentication bug in Internet Explorer discovered by Mike Benham. This would be an excellent time to laugh at yet another Windows bug if it weren't for the fact that this same bug is found in Konqueror, the KDE browser. To understand the bug, let's take a look at how a browser correctly authenticates a Web server.

The Web server has a public and private key installed that it uses for encryption and authentication. When the browser connects, the Web server presents it's public key. Certificate Authority -- an overpaid entity such as VeriSign that says, "Yes, this key belongs to this site" -- signs this public key.

The browser has a hard-coded list of acceptable Certificate Authorities. It will check the CA signature that is part of the server's certificate and verify that it is signed by one of these trusted CAs. If it is not, either the connection is dropped or you are assaulted with a series of warning dialogs.

Some site certificates are not signed directly by a CA key, but by intermediary CAs as part of a certificate chain. For example if you have a trusted Certificate Authority, "Foo Security, Inc.", and that CA has signed an Intermediate Certificate Authority for "Bar None Security", then Bar is allowed to sign server certificates such as www.example.com. This certificate chain would look something like this:


Certificate Type Trust Level
www.example.com: server cert Signed by Bar None Security
Bar None Security: Intermediate CA Signed by Foo Security, Inc
Foo Security, Inc: Root CA Implicit trust - installed in browser

The problem with IE and Konqueror is that they simply verified that cert Foo signed cert Bar, which signed www.example.com. They did not verify that Bar was an Intermediate Certificate Authority. What does this mean? If I had a valid certificate for some domain, say www.my_domain.com, I can use it to sign any server certificate I want. For example:


www.big_bank.net: server cert Signed by www.my_domain.com
www.my_domain.com: server cert Signed by Foo Security, Inc
Foo Security, Inc: Root CA Implicit trust - installed in browser

So, what to do? Well Konqueror had a fix available in an hour and a half. If you're using the CVS version of KDE, recompile Konqueror and you'll be all set. The fix is part of KDE 3.0.3, which is being released pretty soon. Most Linux distributions either have or are preparing updated packages.

If you're using IE then you have a longer wait in front of you. Microsoft says that the bug is in the OS, not in IE. The certificate checking code is not part of the CryptoAPI, a cryptography library used by several other Microsoft programs, so the bug only affects IE. Why the code isn't in the CrytoAPI, I can't imagine. And why the broken code - which is in the OS, not in IE -- would only affect IE, I'll leave to your imagination. But expect to wait a while. Microsoft doesn't see broken SSL as a pressing security problem.

To read more about this vulnerability, see Benham's original BugTraq post here.

More about VeriSign, KDE, Microsoft, CERT, CVS
Additional Resources
Newsletter Subscription
Sign up for our LinuxWorld newsletters!
RSS Feeds
 
Sponsored Links