|
|||||||||||||||
Current Texts Comic Imprint Calendar Search PHP-Classes Container-Wizard main.s21 |
|||||||||||||||
Categories
{{login}}
|
The Debian SSL Issue
Yesterday an entry appeared at the heise newsticker which might become one of the most severe software bugs ever: a flaw within Debian's version of OpenSSL that has existed for about two years and results in very weak keys, compromising not only the keys, but any transmission protected by them. The Course of EventsTesting OpenSSL with Valgrind, a Debian developer stumbles across warnings issued by that compiler about the use of uninitialized memory. Looking into the source, he finds that there is already a command left in the code for another compiler to ignore the offending line. He then decides to remove it altogether, which would not have impacted the randomness of the number generator. However, he finds another line which looks similar and decides to remove it as well, breaking the RNG in the process: from now on, the RNG would produce predictable numbers, limiting the effective length of all keys generated by that version of OpenSSL to about 16 effective bit, a bitlength that is easily broken. The failuresLooking at the case, this is a typical chain of events that lead to a catastrophic outcome. The mechanisms which should have prevented such an accident where either ignored, not effective or not even there:
The Aftermath / What to learnThe flaw is surely one of the most serious bugs ever, I even go as far to think of it as the worst bug ever, due to its massive impact not only the present, but the past too. We have to see that in worst case, two years worth of encrypted communication is broken. People relying on that encryption will suddenly find themselves exposed. And even only one compromised machine can very well mean a larger damage. If you generated a good key over a bad connection, that good key has to be seen as compromised also, which could be very well the start of a long chain. In the end, would my own infrastructure had been compromised, I would have needed to recreate the whole infrastructure from scratch, as I could not have been sure anymore what I can consider secure and what not. One might say that this is over the top, but in the end the only safe way to ensure that you're secure again. Given that, this bug will haunt the Linux world for a time to come. I found out that a major german hosting provider is vulnerable as well - we're talking a few million websites here. Now knowing about reality, I find it hard to imagine that this problem is fixed quick; those with experience know well enough that often the Powers That Be care less about seemingly elevated security issues when they have other pressing business to be done. Also, the bug will surely shake the confidence of some in their "mine is longer than yours"-keys. Personally, I greet that; I'm fed up with "know it alls" boasting about their secure operating system and how stupid everyone else is. Even though they think they are in "full control" of their system, the fact that such a bug can fester undiscovered for about two years surely demonstrates that just knowing how to operate a bash does not mean to be in full control. Frankly, not even compiling everything from scratch guarantees that unless you've read and understood the sources. Everything of it. Said that, the Open Source community would do best really adressing to that problem instead of going to patterns like "It would have been even worse with Closed Source" and "It was someone else's fault". Face it - Open Source has been beaten on it's very own hometurf: one of the major arguments of OS apologetics is that bugs in Open Source are more likely to be found and that it can be especially trusted for high security applications such as cryptography. Debian and the community surely has failed to cash in on that one. If they fail to accept it and learn from it - Microsoft and other closed source vendors surely will. Now as we surely all agree that it was a Bad Idea to mess with the source for no important reason in the beginning, one should learn from it and first begin to see that vendor patches as such should be thought over. And even if distributors want to continue with their practice of enhancing third party products downstream, they should at least think about which packets to modify and out of what reasons. Crypto is so critical that it should almost never be touched on the vendor side, not even by the most intelligent code gurus. As of now, I can think of no viable reason why it should be touched altogether, but certainly not because some debugging tool throws warnings. Even if it fails to build on a certain platform, I deem it to be better to have no crypto at all than a broken one. CommentsPlease note: comments posted won't be visible immediately, as they will be checked for harmful content. |