Skip to content

Berühmte Softwarebugs

Sebastian Zug edited this page Apr 6, 2022 · 31 revisions

Übersicht

Luft- und Raumfahrt

  • Beim Kampfflugzeug F-16 brachte der Autopilot das Flugzeug in Rückenlage, wenn der Äquator überflogen wurde. Dies kam daher, dass man keine „negativen“ Breitengrade als Eingabedaten bedacht hatte. Dieser Fehler wurde sehr spät während der Entwicklung der F-16 mithilfe eines Simulators entdeckt und beseitigt.[1]
  • 1999 verpasste die NASA-Sonde Mars Climate Orbiter den Landeanflug auf den Mars, weil die Programmierer unterschiedliche Maßsysteme verwendeten (ein Team verwendete das metrische und das andere das angloamerikanische) und beim Datenaustausch es so zu falschen Berechnungen kam. Eine Software wurde so programmiert, dass sie sich nicht an die vereinbarte Schnittstelle hielt, in der die metrische Einheit Newton × Sekunde festgelegt war.[3] Die NASA verlor dadurch die Sonde.[4]
  • Beim Start der als Nachfolger der Delta 2 geplanten neuen Delta-3-Rakete 1998 geriet diese 75 Sekunden nach dem Start in Schräglage zur Flugrichtung und musste gesprengt werden. Die Steuersoftware war aus der Delta 2 übernommen worden, was aber zu einer falschen Interpretation bezüglich einer 4-Hz-Eigenschwingung in Rollrichtung innerhalb der hydraulischen Steuersysteme der Booster-Raketen führte.[5] Das mehrere hundert Millionen Euro teure Weltraumteleskop Hitomi geriet Ende März 2016 nach einer Verkettung von Softwarefehlern in zu schnelle Rotation und ging verloren. Die Software war fälschlicherweise von einer unerwünschten langsamen Rotation des Satelliten ausgegangen und versuchte, die scheinbare Drehung durch Gegenmaßnahmen zu kompensieren. Die Signale der redundanten Kontrollsysteme wurden falsch gedeutet, und schließlich wurde der Satellit immer stärker in Rotation versetzt, bis er wegen der zu groß werdenden Fliehkräfte schließlich zerbrach.[6][7]

Handel

  • Im Dezember 2014 arbeitete eine Software „fehlerhaft“, die Produktpreise abhängig vom Preis bei der Konkurrenz automatisch festlegt. Auf dem Marktplatz des Online-Versandhändlers Amazon wurden die Verkaufspreise vieler Händler für Hunderte Produkte auf 0,01 Englische Pfund gesetzt. Einigen Anbietern drohten mehrere Zehntausend Pfund Verlust, mitunter befürchteten einige, die Panne könne sie in den Konkurs treiben.[9] Verkehr
  • Am 12. März 1995 kam es wegen eines um wenige Byte zu klein bemessenen Stapelspeichers in der Software eines Hamburger Stellwerks, bei dem auch das Ersatzsystem aus Sicherheitsgründen abgeschaltet wurde, zu massiven Verzögerungen im bundesweiten Zugverkehr.[10] Am 16. Dezember 2009 kam es zu einem ähnlichen Fehler im Stellwerk des Hauptbahnhofs Hannover.[11]
  • Die USS Yorktown, ein weitgehend computerisiertes Schiff der Ticonderoga-Klasse, trieb nach Aussage der Navy bei einem Manöver im September 1997 knapp drei Stunden hilflos im Mittelmeer, nachdem ein Ingenieur 0 direkt in die Datenbank eingegeben hatte, um einen fehlerhaften Eintrag eines Sensors zu korrigieren. Die Software verwendete diesen Wert für Divisionen, die Folge waren „Division durch null“-Fehler, welche von der Software nicht korrekt abgefangen wurden. Es füllte sich im weiteren Verlauf der temporäre Speicher des Systems und als dieser voll war, wurde beim Überlauf der angrenzende Speicherbereich, der des Antriebssystems, überschrieben. Das Antriebssystem und das Rechnernetzwerk, das aus mehreren Windows-NT-Servern bestand, fielen aus, da sich der Fehler im Netzwerk ausgebreitet hatte. Es dauerte über drei Stunden, die Server zu reanimieren.[12] Bei Toll Collect kam es 2003[13] unter anderem wegen der fehlenden Kompatibilität von Softwaremodulen zu drastischen Verzögerungen mit Vertragsstrafen und Einnahmeausfällen in Milliardenhöhe.
  • In den USA hatte ein Sicherheitsexperte "null" als KFZ-Kennzeichen eintragen lassen. Dieser Begriff wird in vielen IT-Systemen als Kennzeichen für das Fehlen eines Wertes verwendet und konnte nur aufgrund eines Programmfehlers eingetragen werden. Dieses eigentlich unzulässige KFZ-Kennzeichen hat deshalb dazu geführt, dass der Besitzer Strafzettel erhielt, bei denen kein KFZ-Kennzeichen erfasst war.[14]

Finanzwesen

  • Anfang November 2005 konnte an der Tokioter Börse wegen eines Systemfehlers stundenlang kein Handel betrieben werden. Auch in den nachfolgenden Wochen gab es viele fehlerhafte Wertpapierorders; in einem Fall entstand sogar ein finanzieller Schaden von über 300 Millionen Dollar. Der Präsident der Börse, Takuo Tsurushima, trat daraufhin von seinem Amt zurück.[15]
  • Im August 2012 verlor die Firma Knight Capital innerhalb von 45 Minuten mehr als 440 Millionen US-Dollar (359 Millionen Euro) durch einen Fehler in ihrer Aktienhandels-Software. Ein neues Handelsprogramm überflutete den Markt mit fehlerhaften Handelsaufträgen und häufte einen Berg zu teuer gekaufter Aktien an. Die folgende Rettung der Firma durch Investoren kostete die Alteigentümer 70 bis 75 Prozent ihrer Anteile am Unternehmen.[16]
  • Im Oktober und November 2012 kam es auf Grund von Schwierigkeiten bei der Migration auf ein neues Kernbankensystem in den Online-Bankingsystemen der Bank Austria zu massiven Problemen.[17] Das System war nach der 2-tägigen Umstellungsphase noch einen weiteren Tag nicht erreichbar, musste mehrmals neugestartet werden und war noch Tage nach der Umstellung teilweise nicht erreichbar, oft überlastet und dadurch langsam. Geldausgabeautomaten funktionierten nicht, Überweisungen wurden fehlerhaft durchgeführt und die neue Benutzeroberfläche wurde als zu unübersichtlich und kompliziert kritisiert.[18] Neben der Zusicherung, etwaige Mahnspesen zu übernehmen, bot die Bank Austria ihren OnlineBanking- und BusinessNet-Kunden Gutscheine im Wert von jeweils 30 € an, in Summe 21 Millionen €.[19]

Kommunikation

  • 2007 kam es in Österreich bei der Umstellung auf digitales Satellitenfernsehen zu Problemen in rund 30.000 Haushalten, weil Software im Digitalreceiver fehlerhaft war.[20]
  • In der Nacht vom 29. zum 30. Oktober 2007 kam es bei der Deutschen Telekom zu bundesweiten Ausfällen und Fehlverbindungen bei Sprachdiensten im Kommunikationssystem, weil eine aktualisierte Server-Software fehlerhaft war. Das System konnte erst nach mehreren Stunden durch die Installation der alten Software wieder zum Laufen gebracht werden.[21][22]

Militär

  • Im Oktober 2007 kamen zehn Angehörige der südafrikanischen Armee durch ein vollautomatisiertes 35-mm-Flakgeschütz ums Leben. Als Ursache wurde ein defektes Computersystem vermutet.[23] -Informationstechnik
  • Der sogenannte Box-Model-Bug im Internet Explorer sorgte dafür, dass viele Webdesigner für diesen Browser spezielle Anweisungen schreiben mussten, da das Programm Maßangaben für Webseiten-Elemente fehlerhaft interpretierte. Durch den Heartbleed-Bug in OpenSSL konnten über TLS- und DTLS-Verbindungen Teile des Arbeitsspeichers der Gegenseite ausgelesen werden. Manche Malware testet vor dem Ausführen des Schadcodes die Erreichbarkeit von zufällig generierten Internet-Adressen (Ping). In Testumgebungen wird häufig die Erreichbarkeit sämtlicher Internet-Adressen simuliert, unabhängig von deren realer Existenz. In diesem Fall soll sich die Malware selbstständig deaktivieren, um in einer Testumgebung keine nachvollziehbaren Aktionen durchzuführen. Bei der sich am 12. Mai 2017 weltweit verbreitenden Ransomware WannaCry wurde diese (vermutliche) Anti-Analyse-Maßnahme jedoch falsch umgesetzt: die getestete Internet-Adresse wurde in das Programm hartkodiert und war somit immer gleich. Daher konnte die tatsächliche Registrierung dieser Domain die weltweite Verbreitungswelle stoppen – obwohl dies ursprünglich nicht die Intention war.[24]

Bugs im einzelnen

1. Milleniums Bug


Quelle: Wikipedia

Da Speicherplatz am Anfang der Computerära teuer und somit knapp war, wurde bei Jahresangaben nur die Zehner und Einser gespeichert, d.h. das Jahr 1979 wurde beispielsweise als 79 gespeichert. Die Probleme fingen dann bei der Jahrtausendwende an. 2000 muss nach der oben genannten Regel als 00 gespeichert werden. Programme aus der damaligen Zeit würden jedoch 00 als 1900 interpretieren, was zu vielen Fehlern führen würde, z.B.

  • Fehler beim Vergleichen von Jahreszahlen: 00 < 99 => 2000 < 1999
  • Fehler bei der Berechnung von Zeitangaben: 00 - 99 ≠ 1, weil 1900 - 1999 = -99
  • Fehler bei der Zinsberechnung
  • ...

Das-Jahr-2000-Problem

2. Patriot-Raketen-Fehler

Während des Golfkriegs verfehlte am 25.2.1991 in Saudiarabien eine amerikanische Patriot-Rakete eine irakische Scud-Rakete. Die Scud-Rakete traf eine Kaserne und tötete 28 Soldaten.

Ursache: Ungenaue Berechnung der Zeit seit Systemstart wegen Rundungsfehler. Interne Uhr in zehntel Sekunden. Umrechnung: Verstrichene Zeit mit 1/10 multipliziert, um die verstrichene Zeit in Sek. zu berechnen. Dabei ist

1/10 = 2^{-4}+2^{-5}+2^{-8}+2^{-9}+2^{-12}+2^{-13}+...

Als Festkommazahl mit 24 Stellen also

0.00011001100110011001100

Rundungsfehler:

2^{-25}+2^{-26}+... approx 0.000000095=9.5*10^{-8}

Effekt: Nach 100 Betriebsstunden 100*60*60*10=3.6*10^6 ergibt sich als Fehler (Zeitdifferenz)

9.5*10^{-8}*3.6*10^6=0.34 Sekunden

Scud-Geschwindigkeit 1.676 km/s=6034 km/h Scud in der Zeit ca. 0.57 km weiter. Damit ausserhalb der Reichweite des ``Aufspürsystems'' der Patriot.

Quelle: Kleine BUGs, große GAUs: Softwarefehler

3. Atomwaffen Gandhi

Der als friedlich bekannte Inder Mahatma Gandhi ist im Spielefranchise Civilization dafür bekannt, besonders gerne nukleare Waffen zu nutzen. Diese Affinität ist einen Programmierfehler im ersten Teil zuzuordnen, in welchem der Agressionswert bestimmt, wie wahrscheinlich es ist, dass der Herrscher eine atomare Waffe benutzt. Gandhi startet dort mit einem Aggressionswert von 1, jedoch bekommt jede Demokratie bei Spielstart -2 Aggresionspunkte, was zu einem Wert von -1 führt. Binär betrachtet entspricht das folgender 8 Bit Zahl:

1111 1111

Dieser Wert wird intern aber als ein unsigned char, also wie eine 8 Bit vorzeichenlosen Ganzzahl behandelt. Dies führt dazu, dass nicht eine -1 gelesen wird, sondern der Maximalwert dieses Datentyps 255.

Quelle: Atombombe von Gandhi

4. Linearbeschleuniger in Krebstherapie

Der Therac-25 der Firma Atomic Energy of Canada Limited ist ein Linearbeschleuniger, der Röntgenstrahlen mit 25 MeV oder Elektronenstrahlen zur Behandlung von Tumoren erzeugen konnte. Er wurde von 1985 bis 1987 eingesetzt. In der Therac-Serie war der Therac-25 das erste Modell, bei dem die Konfiguration des Beschleunigers komplett an einem Computer und nicht mehr am Gerät erfolgte. Außerdem wurde auf hardwarebasierte Sicherheitssysteme verzichtet.

Im Röntgenmodus muss für die Erzeugung der Röntgenstrahlung zusätzlich eine Bleiplatte in den Strahlengang eingeführt werden, für eine optimale Ausbeute muss die einstrahlende Intensität ca. 100 mal höher sein. Befand sich diese Bleiplatte nicht im Strahlengang, konnte die Strahlenüberdosis bis zum Tod führen. Insgesamt kam es zu 6 Unfällen in Folge von Softwarebugs und menschlichem Fehlverhalten. Unter anderem wurden bei Komplettierung der Behandlungseinstellungen am PC eventuelle Korrekturen bei Fehleingaben nicht registriert, da zwischen den einzelnen Subroutinen eine Race-Condition eintreten konnte.

Weiterhin wird für Fehler in der Konfiguration eine 8bit-Variable inkrementiert. Kommt es zu einem Overflow, ist der Wert der Variable gleich 0 und es wird kein Fehler registriert.

Quellen: Hauptseminar Prof. Huckle - Therac-25 (TU München), Pfeifer, Martin. Berühmt berüchtigte Softwarefehler. Therac-25.

5. Windows Calculator

Rundungsfehler gehören zu den wohl häufigsten Bugs in der Softwareentwicklung. Selbst weltberühmte Software wie das Windows OS ist vor solchen Fehlern nicht sicher. Fehlerhaft waren hier die aus der Operation des Wurzel-Ziehens resultierenden Floats, die in weiteren Berechnungen aufgrund des auftretenden Rundungsfehlers nicht die zu erwartenden Ergebnisse lieferten.

Leider lässt sich der Bug auf aktuellen Windows-Versionen nicht mehr reproduzieren, aber wer ein älteres System besitzt sollte den Bug schnell nachvollziehen können.

Quelle: Famous Bugs

6. Beim Aktienhandel verzockt

Die Wall-Street-Firma Knight Capital setzte 2012 durch den Einsatz einer neuen Handels-Software in Rekordzeit die eigene Existenz aufs Spiel.

Image of Knight Capital Quelle: https://upload.wikimedia.org/wikipedia/en/thumb/3/31/Knight_Capital_Group_logo.svg/1200px-Knight_Capital_Group_logo.svg.png

45 Minuten ließ Knight Capital eine neue Computersoftware mit Aktien zocken. Danach war die Aktienhandels-Firma um 440 Millionen US-Dollar (359 Millionen Euro) ärmer. Das Geld gehört jetzt anderen Leuten, Knight Capital kämpft ums Überleben. 440 Millionen Dollar sind deutlich mehr, als der im jüngsten Quartal erzielte Umsatz von 289 Millionen Dollar. Der Vorfall wird in den USA in Anspielung an eine Horrorfilm-Reihe als "Knightmare on Wall Street" (Nightmare = Alptraum, Anm.) bezeichnet.

Bei dem umstrittenen hochfrequenten Handel (High Frequency Trading) werden Wertpapiere in extrem schneller Folge ge- und wieder verkauft. Das Tempo kann nur von automatischen Systemen gehalten werden. Ein solches neues, fehlerhaftes System ist laut Knight Capital an dem Debakel schuld. Der neue Algorithmus soll tausende Aufträge in die Handelssysteme der New Yorker Börse NYSE eingespeist haben, die weit vom ansonsten herrschenden Marktpreis abwichen. Etwa 150 Papiere sollen betroffen gewesen sein.

Quelle: heise online

7. Ariane V88

Der Erstflug der europäischen Schwerlast-Trägerrakete Ariane 5 am 4. Juni 1996 endete etwa 40 Sekunden nach seinem Start. Die vier Cluster-Forschungssatelliten, mit denen das Erdmagnetfeld auf kurze räumliche und zeitliche Veränderungen dreidimensional untersucht werden sollte, explodierten mit dem Rest der Rakete. Schuld daran war ein Fehler in einem Softwaremodul der inertialen Navigationssysteme(INS) der Steuerungseinheit, bei dem wie im Ghandibeispiel ein Zählerüberlauf stattfand. Die Software war unverändert und ohne Systemtests vom Vorgängermodell übernommen worden. 36 Sekunden nach Raketenstart lieferten die INS nach vollständigem Ausfall der Lenk- und Lagefunktionen nunmehr Diagnoseinformationen an den Flugcomputer. Der fasste diese jedoch als Flugdaten auf und korrigierte fälschlicherweise die Flugbahn mit einer Abweichung von mehr als 30° zur tatsächlichen Flugbahn. Aufgrund der hohen aerodynamischen Kräfte kam es in etwa 4000m Höhe zu dem etwa 290 Mio.€ teuren Fehler.

Die Codezeile, die zum Fehler führte, lautete wie folgt:

P_M_DERIVE(T_ALG.E_BH) := UC_16S_EN_16NS (TDB.T_ENTIER_16S ((1.0/C_M_LSB_BH) * G_M_INFO_DERIVE(T_ALG.E_BH)))

Quelle: Wikipedia

Clone this wiki locally