Skip to main content

NULL Prefix attack against SSL certificates

I was show casing the SSLStrip tool in my office. Everybody was asking how it works. Security Researcher Moxie had released two tools SSLSniff and SSLStrip during Black Hat 2009. These tools were capable of doing MITM on SSL connection. They exploited a weakness in signing the certificates. SSL heavily rely on X509 certificate structure to prove authenticity.
For the SSL it is the 'common name field' of the X509 certificate that is used to identify authentic servers. For example, Paypal will used 'www.paypal.com' in the common name field.
The signing process heavily relies on the above convention. The Certificate Authorities will sign 'www.paypal.com', they don't care whether you are requesting for 'anything.paypal.com' or 'anything1.anything.paypal.com'- as long as you prove that you are paypal.com.
The Trick:
X509 certificates are commonly formatted using ASN.1 notation. ASN.1 supports many string types but all of them are represented as some variations of PASCAL. In PASCAL character string the NULL characters are treated as normal characters. They don't have any special meaning.
So NULL characters can be included into the common name field of X509 certificates. So a signing request like www.paypal.com\0.fakeorganization.com will be treated valid. The Certificate Authority will ignore prefix and sign the root domain fakeorganization.com.
Now the the thing is most contemporary SSL/TLS implementation treat the field in X509 as C strings. And in C '\0' (NULL) means end of the string. So www.paypal.com\0.fakeorganization.com and www.paypal.com will be treated as identical.
So the owner of the certificate for www.paypal.com\0.fakeorganization.com can successfully present his certificate to the connections intended for original www.paypal.com.
Here MITM happens on SSL. SSLSniff tool works at this theory.
You can sign your own certificates using the valid certificate you got from Certificate Authority.
Actually there is field in X509 certificates which needs to be set FALSE in order to restrict domain owner to act as a Certificate Authority.
Most CA's didn't explicitly set basicConstraints:
CA=FALSE
A lot of web browsers and other SSL implementations didn't bother to check it, whether the field was there or not.
Anyone with a valid leaf node certificate could create and sign a leaf node certificate for any other domain.
The blueanarchy.org can create a valid certificate as paypal.com and use it.
Reference:http://www.thoughtcrime.org/about.html

Comments

Anonymous said…
is this still vulnerable in our browsers?
Nilesh Kumar said…
As of now ,I am not aware of any browser specific vulnerabilities but I have tested it on IE6 and FF 3.5

Popular posts from this blog

File Upload through Null Byte Injection

Sometimes, during file upload we come across situation wherein there would be check on the file extension at the client side as well as server side too. If the application does allow only .jpeg extension to be uploaded, the client side java script checks for the extension of the file before passing the request. We all know that how easily this can be defeated. Some applications, checks for the extension at the server side also. That's not easy to bypass. However there are some ways with which it still can be bypassed. Most of server side scripts are written in high level languages such as Php, Java etc who still use some C/C++ libraries to read the file name and contents. That leads to the problem. In C/C++ a line ends with /00 or which is called Null Byte. So whenever the interpreter sees a null byte at the end of the a string, it stops reading thinking it has reached at the end of the string. This can be used for the bypass. It works for many servers, specially php servers. T...

'Information Leakage-Improper Error Handling' dropped

From Owasp Top 10 2010 List, the issue 'Information Leakage-Improper Error Handling' has been dropped. But it's not the final list,its child release actually. Bu I feel it shouldn't be set aside because its still the one of the prevalent issues these days. That's why I mailed to Dave Wicher: Hi Dave, Excellent work, Congrats! Just one little query- Don't you think that Information Leakage & Improper Error Handling still deserves to be in Top 10? Dave replied: This topic is clearly a very prevalent issue that deserves attention by most organizations. However, the typical impact of such a flaw is usually very low. Therefore, the overall risk of this type of flaw is lower than the other items in the top 10, which is why it was replaced in this update with one of the 2 new items. Regarding dropping Info Leak/Error handling - It is incredibly prevalent, no question. But their impact is typically very low, so the overall risk is low, which is why it fell out of t...

jtool - an alternative to otool

jtool comes with a capability of running on Linux environment. Some ipa scanning tools are created to run on Linux environment where mac environment is not available. In such cases tools such as otool and class-dump-z will not work. So jtool can be an alternative to otool. For more information on jtool please refer to http://www.newosxbook.com/tools/jtool.html . It lists down various commands which have same output as otool or a equivalent. There are several commands mentioned in link. But for our customized requirements and basis checks I have listed down the below ones after running on many binaries. The outputs are similar or equivalent to otool and class-dump-z: Commands for checking PIE flag (ASLR) in jTool jtool -d -v -arch | grep stack ·           Automatic Reference Counting (ARC) protection: jtool -d -v -arch | grep _objc_release ·           To check if the devic...