The uninitialized memory wasn’t the only source of randomness: OpenSSL also gets randomness from sources like mouse movements, keystroke timings, the arrival of packets at the network interface, and even microvariations in the speed of the computer’s hard disk. But when the programmers saw the errors generated by Valgrind, they commented out the offending lines–and removed all the sources of randomness used to generate keys except for one, an integer called the process ID that can range from 0 to 32,767.
“Never fix a bug you don’t understand!” raved OpenSSL developer Ben Laurie on his blog after the full extent of the error became known. Laurie blames the Debian developers for trying to fix the “bug” in the version of OpenSSL distributed with the Debian and Ubuntu operating systems, rather than sending the fix to the OpenSSL developers. “Had Debian done this in this case,” he wrote, “we (the OpenSSL Team) would have fallen about laughing, and once we had got our breath back, told them what a terrible idea this was. But no, it seems that every vendor wants to ‘add value’ by getting in between the user of the software and its author.”
Perhaps more disconcerting, though, is what this story tells us about the security of open-source software–and perhaps about the security of software in general. One developer (who I’ve been asked not to single out) noticed a problem, proposed a fix, and got the fix approved by a small number of people who didn’t really understand the implications of what was being suggested. The result: communications that should have been cryptographically protected between millions of computer systems all over the world weren’t really protected at all. Two years ago, Steve Gibson, a highly respected security consultant, alleged that a significant bug found in some Microsoft software had more in common with a programmer trying to create an intentional “back door” than with yet another Microsoft coding error.
The Debian OpenSSL randomness error was almost certainly an innocent mistake. But what if a country like China or Russia wanted to intentionally introduce secret vulnerabilities into our open-source software? Well concealed, such vulnerabilities might lay hidden for years.
One thing is for sure: we should expect to discover more of these vulnerabilities as time goes on.
Simson Garfinkel is an associate professor at the naval postgraduate school in Monterey, CA, and a fellow at the Center for Research and Computation and Society at Harvard University.
Smaller design teams can now prototype and deploy faster.