Die größten Bugs der IT-Geschichte
Die Entwicklung von Hard- und Software ist von vielen Fehlern begleitet, die man heute als „Bugs“ bezeichnet. Kein System ist fehlerfrei, und deshalb schauen wir uns die bekanntesten Bugs der IT-Geschichte an.
Wo Hard- und Software entwickelt wird, entstehen Fehler, sei es aus Versehen, aus Nachlässigkeit, wegen zu kurzfristigen Planungen oder schlicht durch fehlendes Wissen. Dies ist auch der Grund, warum es nie den perfekten Computer geben wird. Eines der ersten Computerprogramme entstand bereits im Jahr 1842 für eine analytische Rechenmaschine, die nie in Serie ging. Die Mathematikerin Ada Lovelace schrieb dafür ein Programm, welches einen grundlegenden Fehler enthielt, der auf vertauschten Variablen beruhte: Aus "v5 / v4" wurde "v4 / v5". Ada Lovelace gab als Entschuldigung an, dass es sich um einen Setzerfehler gehandelt habe.
Der erste Bug überhaupt - von Edison
Woher stammt eigentlich der Begriff "Bug", der heute umgangssprachlich für einen IT-Fehler verwendet wird? Die Bezeichnung war bereits zur Jahrhundertwende um 1900 bekannt. Niemand Geringeres als Thomas Alva Edison verwendete in seinen Briefen an Kollegen den Begriff "Bug", als er seine Suche nach den Gründen für die Fehlfunktion eines Telegrafiegeräts beschrieb. Dies ging so weit, dass Edison die Klassifizierung von Bugs im Lateinischen versuchte, wie es in der Biologie üblich ist, und bezeichnete einen der gefundenen Bugs als "Callbellum", der gemäß seinen humorvollen Beschreibungen in allen Fernsprechgeräten gute Lebensbedingungen vorfand.
Computer Harvard Mark II: Fehler durch echte Insekten
Nicht nur sinngemäße Bugs, sondern ein echtes Insekt in Form einer Motte war die Fehlerursache eines Großrechners aus dem Jahr 1947. In einem der Hochgeschwindigkeits-Relais, mit denen die Maschine in Harvard arbeitete, fand einer der Entwicklungsingenieure eine eingeklemmte Motte, die für Kontaktschwierigkeiten sorgte. Im handschriftlich geführten Logbuch des Harvard Mark II gibt es einen dokumentierten Eintrag, der mit "Erster echter Bug gefunden" überschrieben ist. Unter einer Folie wurde dazu die Motte als Nachweis eingeklebt. Daraufhin schuf die Informatikpionierin Grace Hopper den Begriff "Debugging", den heute alle Softwareentwickler für die Fehlersuche verwenden.
Fließkommas an falscher Stelle und metrische Einheiten
Die US-Raumfahrtbehörde NASA hatte in den 1960er Jahren auf ihrem Weg, zum Ende des Jahrzehnts auf dem Mond zu landen, mit vielen Fehlschlägen zu kämpfen. Oft waren es vermeintlich banale Fehler, die sich in programmierten Abläufen versteckt hielten und zum Scheitern der jeweiligen Mission führten. So musste im Jahr 1962 der Satellit Mariner I durch eine herbeigeführte Explosion zerstört werden, nachdem seine Trägerrakete kurz nach dem Start vom Kurs abkam. Im Programmcode eines Steuerungsmoduls fehlte schlicht eine Punktierung, die zu einem Verlust von rund 80 Millionen US-Dollar führte (nach heutigem Wert rund 630 Millionen US-Dollar).
Dagegen mutet der Verlust eines Mars-Orbiters im Jahr 1999 schon beinahe kurios an. Die Raumfahrt-Ingenieure hatten bei der Berechnung der Flugdaten britische Maßeinheiten benutzt, die bei der NASA als metrisch interpretiert wurden. So wurden aus Meilen eben Kilometer, sodass die Marssonde dem Planeten mehrere hundert Kilometer zu nahe kam.
Der Jahr-2000-Bug - und sein Nachfolger steht bereits vor der Tür
Wir erinnern uns: Ende der 1990er Jahre bekamen altehrwürdige Damen und Herren im Alter von 105 Jahren Post von den örtlichen Behörden, in der die Leute zu ihrer Einschulung eingeladen wurden. Ursache war, dass in Großrechneranlagen die Jahreszahlen stets zweistellig angegeben wurden, sodass die Maschinen nicht die Geburtsjahre 1994 von 1894 unterscheiden konnten. Arbeitsspeicher war schließlich ein knappes Gut. Die Ursachen sind jedoch viel früher zu suchen: in den Lochkarten-Systemen, in denen aus dem gleichen Grund ebenfalls die Jahreszahlen nur zweistellig gestanzt wurden.
Nun sah man in den Jahren vor 2000 jedoch das Problem auf sich zu kommen, dass in der Silvesternacht 1999/2000 manch älteres Großrechnersystem auf das Jahr 1900 zurückspringt, da das Jahr 2000 zu den Zeiten, in denen die Systeme entwickelt wurden, noch in weiter Ferne lag. Und so kam 1998 weltweit Panik auf, da man einen Zusammenbruch der IT-Systeme befürchtete.
Aufgrund von groß angelegten Debugging-Aktionen, bei denen mitunter sogar pensionierte Programmierer aus ihrem Ruhestand geholt wurden, die die alten Programmiersprachen noch beherrschten, konnte das befürchtete Unheil verhindert werden. Aber auch für die seinerzeit aktuellen Versionen von Excel und MS-Access erschienen Updates, da diese nicht Jahr-2000-fähig waren.
Unix-Systeme arbeiten mit ihren Zeitberechnungen mit einem 32-Bit-Integerwert, der am 01.01.1970 mit 0 begann. Der höchstmögliche Wert der 32-Bit-Zahl läuft im Jahr 2038 über und springt dann in den negativen Bereich. Das wird dazu führen, dass die Systeme auf den 13. Dezember 1901 zurückspringen. Um diesem Problem zu begegnen, werden bereits jetzt lang angelegte Programmieraktionen angestrengt. Zwischen den Linux-Kernelversionen 4.18 aus dem Jahr 2018 und 5.6 aus 2020 wurde der Sourcecode analysiert, um den 2038-Fehler in allen Linux-Subsystemen zu beheben.
Bugs in Prozessoren: Spectre und Meltdown
Seit 2017 haben Prozessoren, die auf Performance optimiert wurden, mit zwei Sicherheitslücken zu kämpfen. Diese als Meltdown und Spectre bezeichneten Bugs entstanden durch ein Prozessordesign, das durch vorausschauende Arbeitsweise für verbesserte Performance sorgen sollte. Dabei zeigte sich jedoch, dass laufende Prozesse auf Adressräume des RAMs zugreifen können, was sie eigentlich nicht dürften. Die Entdecker dieser Sicherheitslücken informierten 2017 die Hersteller der betroffenen CPUs. Seitdem wird an Behebungen in den Betriebssystemen gesorgt, die diesen Prozessorfehler umgehen.
Nummerierte Bugs: das CVE-System
Die Vielzahl bekanntgewordener sicherheitsrelevanten Bugs über alle Betriebssysteme hinweg ruft geradezu nach einer eindeutigen Identifizierung. Bereits im Jahr 1999 nahm die US-amerikanische National Cybersecurity FFRDC das Klassifikationssystem CVE in Betrieb. Hierbei handelt es sich um eine öffentlich einsehbare Datenbank, die alle IT-Sicherheitslücken weltweit mit einem eindeutigen Code versieht. CVE steht für Common Vulnerabilities and Exposures. In der Datenbank wird auch eine Einstufung nach Schwere des Fehlers und des Risikos vorgenommen. So enthalten sicherheitsrelevante Bugs in verbreiteten Programmen eine CVE-Nummer, sobald dies vom Entdecker oder den Verantwortlichen des Fehlers beantragt wird. So hat etwa der Bug "Heartbleed", der in der Open-Source-Bibliothek "OpenSSL" entdeckt wurde, die ID CVE-2014-0160. Die CVE-Datenbank ist unter www.cve.org öffentlich zugänglich.
Bekannte Linux-Bugs
Der Linux-Kernel wurde einst von Linus Torvalds erschaffen. Heute entwickeln unter seiner Aufsicht bis zu 2000 freie Einzelentwickler an dem Projekt. Das heißt aber nicht, dass dadurch Fehler ausgeschlossen werden können, auch wenn ein Linux-Gesetz lautet: "Given enough eyeballs, all bugs are shallow" (sinngemäß: "Viele Augen entdecken alle Fehler"). Viele Linux-Subsysteme sind jedoch personell unterbesetzt, was zu mitunter schwerwiegenden Fehlern geführt hat.
Millionen Linux-basierte Server waren vom Heartbleed-Bug betroffen, bei dem beim Open-Source-Project OpenSSL ein Fehler lange Zeit unentdeckt blieb. Durch einen Software-Fehler verriet das Programm Speicherinhalte des Servers, die über eine SSL-Verbindung an die Gegenstelle übertragen wurden. Dieser massive Bug löste eine Welle an Initiativen für Open-Source-Projekte aus, um ihre Finanzierung und Sicherheit zu gewährleisten.
In der Linux-Shell-Bash kam es 2015 zu einer Sicherheitslücke, bei der an Umgebungsvariablen komplette Funktionen mit Shell-Code angehängt werden konnten. Dieser Bug wurde als "Shellshock" bekannt. Heikel wurde diese Lücke auf Webservern, bei denen CGI-Skripte die Bash-Shell aufrufen konnten und dadurch unzulässige Funktionsaufrufe eingeschleust werden konnten.
Anfang 2022 kam es bei Kernel-Versionen ab 5.8 zum Dirty-Pipe-Bug. Hier wurden gewöhnliche User in die Lage versetzt, fremde Dateien zu verändern, obwohl sie dazu keine Berechtigungen hatten. Von diesem Fehler war auch Android betroffen, was besonders brisant war, da ältere Smartphones und Tablet-PCs keine Sicherheitsupdates mehr von ihren Herstellen erhielten.
Ganze zehn Jahre lang schlummerte eine Sicherheitslücke unentdeckt im Linux-Kernel, die eine Methode betrifft, bei der der Kernel sogenannte Copy-on-Write-Aktionen auf geöffnete Files durchführen konnten, die sich gerade im Arbeitsspeicher befanden. Bei diesem "Dirty-COW"-Bug (Copy on Write) war unter bestimmten Umständen sogar ein root-Zugriff auf die Datei möglich.