On Sat, Jan 2, 2010 at 1:51 PM, Patrick Vande Walle <patrick@isoc.lu> wrote:
1990's when I was commissioned to investigate vulnerabilities in military DNS servers.
This problem has existed for at least 15 years. I remember it existed in the That's interesting. Any pointers to the to the study you released at the time, that may justify your claim that you discovered the vulnerability 14 year before Kaminsky ?
I never said I released a study. What I did say is the vulnerability has existed for the last 15 years. Or more. The first well known incident of the vulnerability was reported back in 1997 when Eugene Kashpureff hijacked the Internic web site. http://bit.ly/6cPPn8 I met Eugene Kashpureff in Toronto before he was arrested and he explained how easy it was to use UDP as an attack vector. Now if you know anything about UDP and DNS you will know the problem is the way random ports are assigned. It was easy for an attacker to guess the port number. That problem existed with the BIND server for years. The issue was properly addressed in BIND shortly after the Kaminsky marketing effort. However it was Bernstein who originally addressed and fixed it. For supporting evidence see cert vulnerability note 800113 http://www.kb.cert.org/vuls/id/800113 You will see that Daniel J. Bernstein is credited with the original idea and the implementation of randomized source ports in DNS resolvers which solved the problem. In fact I can go further and say that the issue was mainly ignored by all the experts. It only became a hot topic to sell us on the adoption of DNSSEC. Nothing more then a marketing effort so the experts would have something to sell us.
A solution to this problem is available and was developed a few years ago by Dr. Bernstein at the University of Illinois at Chicago. It's called DNSCurve
DNSSEC and DNSCurve address different problems. Read for example this post on from the NANOG list which tries to summarize the differences. http://mailman.nanog.org/pipermail/nanog/2009-August/012474.html The author is is no way linked to DJB, so I guess there is more objectivity in this post than is Dan Berstein's advocacy.
I think I smell a little issue between you and Bernstein you had best settle on your own. The nanog message is correct when it states that DNSCurve secures the transaction between the users recursive nameserver (resolver) and the nameserver it queries. In fact that is all that is needed to make the DNS secure. The security issue Kaminsky identified or to be more precise the issue Bernstein discovered is only a problem at the users recursive nameserver. The attack in almost all circumstances starts when a user clicks a malicious web page that causes the users resolver to ask questions of a malicious name server. The malicious name server provides a part answer that requires the users recursive nameserver to get an answer from another nameserver (lets call this the google.com nameserver). The malicious nameserver then attempts to use the UDP random port issue to trick the users recursive nameserver into thinking it got an answer from in our case the google.com server. So the security issue is always user specific and the only way to fix the problem is as Bernstein did in DNSCurve to ensure the answers it gets originate from the server(s) it contacted. The solution is elegant and directly addresses the security problem of concern to us. DNSSEC is neither elegant nor does it fix the problem. The potential to spoof an attack still exists. 1024 bit encryption can be easily broken. The only thing DNSSEC is good for is to reverse engineer the DNS so all the keys end up under the control of the USG root. And that is a very stupid thing to do. cheers joe baptista