Skip to content

Berühmte Softwarebugs

luftykus edited this page Apr 7, 2024 · 31 revisions

Berühmte Softwarebugs

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. "NULL"-Kennzeichen

Auto mit "NULL" als Kennzeichen

Quelle: Wikipedia und Golem.de

Sicherheitsexperte Joseph Tartaro versuchte 2016 bei der kalifornischen Verkehrsbehörde "DMV" ein neues Wunschkennzeichen für sein Auto zu wählen. Spaßeshalber trug er daher "NULL" ein, was in diversen Programmier- und Datenbanksprachen für die Abwesenheit eines Wertes steht. Überraschenderweise ließ sich dieses Nummernschild tatsächlich problemlos eintragen, was Tartaro zunächst freute, da er vermutete, dass sein Auto nun ein "quasi unsichtbares" Kennzeichen besaß.

2017 ließ sich dieser Eintrag nicht mehr erneuern, und als Tartaro 2018 fälschlicherweise einen Strafzettel fürs Falschparken zugestellt bekam, den er ohne zu zögern bezahlte, verknüpfte das dahinterstehende Inkassounternehmen schließlich die Fälle, in denen kein Kennzeichen registriert wurde (oder vergessen wurde, zu registrieren) mit Tartaros Kennzeichen, weil diese in der Datenbank unter "NULL" liefen. So summierten sich bei Tartaro, der keines der Vergehen begangen hatte, Forderungen im Wert von über 12.000 US-Dollar.


3. Der Fall: Therac-25

Der Therac-25 war ein Medizinstrahlentherapiegerät, welcher in den 1980er Jahren entwickelt wurde. Doch trotz seiner bahnbrechenden Technologie führten Softwarefehler und Fahrlässigkeit bei der Fehlersuche zwischen den Jahren 1985 und 1987 zu ganzen drei Todesfällen

3.1 Die Funktionsweise des Therac-25

Beim Therac-25 handelt es sich um einen Linearbeschleuniger zur Bestrahlung von Tumoren. Seine Funktionsweise basierte auf der Erzeugung und Fokussierung von hochenergetischer Strahlung, durch entweder Elektronenstrahlen oder Photonen (Röntgenstrahlen), um Krebszellen zu zerstören. Um tiefer gelegenes Gewebe zu bestrahlen, musste die Energie durch eine Bleiplatte bzw. durch einen Drehteller gebündelt werden. Dadurch war eine viel höhere Energie erforderlich, etwa das 100-fache, um die Platte zu durchdringen. Die korrekte Positionierung des Drehtellers zwischen dem Gerät und dem Patienten war entscheidend, um sicherzustellen, dass die Strahlung nur das beabsichtigte Gewebe traf und keine Schäden an benachbarten Geweben verursachte.

3.2 Die Softwarefehler

Die Positionierung des Drehtellers erfolgte beim Therac-25 computergesteuert. Die Software wurde von einem einzigen, unbekannten Programmierer ohne ausreichende Dokumentation entwickelt, war in PDP-11 Assembler geschrieben und lief auf einem eigenen Standalone-Echtzeit-Betriebssystem.

Therac-25 Benutzeroberfläche
Benutzeroberfläche des Therac-25

3.2.1 Der Texas-Bug

Der Behandlungsmonitor (Treat) steuerte Programmphasen in acht Subroutinen. Eine bestimmte Daten-Subroutine (Datent) kommunizierte mit dem Keyboard Handler und dem System. Nun verhinderte ein spezieller Fehler im Keyboard Handler die Erfassung von Änderungen des Benutzers nach einer zeitlichen Verzögerung. Ein sogenannter Mode/Energy Offset wurde nicht korrekt erfasst, da das System nach acht Sekunden keine Änderungen mehr registrierte. Gab man fälschlicherweise eine falsche Strahlenart ein und korrigierte diese dann später, wurde die Änderung nicht registriert und mit der zuerst eingestellten Strahlenart therapiert.

3.2.2 Der Washington-Bug

Beim Therac-25 gab es die Möglichkeit, den Patienten präzise zu positionieren. Während der Setup-Test-Routine wurde eine Variable inkrementiert, um die Stellung des Gerätes zu verifizieren. Das Problem war, dass diese Variable bei jedem 256. Aufruf zurückgesetzt wurde, was zu Fehlfunktionen führte und die Bestrahlung auslöste, obwohl der Drehteller nicht korrekt positioniert war.

3.3 Die Folgen und Lehren

Die tragischen Vorfälle des Therac-25 verdeutlichen die verheerenden Folgen von Softwarefehlern und mangelnder Sicherheitsüberprüfungen im Allgemeinen und ganz spezifisch bei medizinischen Geräten. Sie führten zu einer dringenden Neuausrichtung der Sicherheitsstandards für medizinische Geräte und ihrer Software. Der Fall hat die Aufmerksamkeit auf die Notwendigkeit gelenkt, strenge Regulierungen und Überwachungsmechanismen zu etablieren, um ähnliche Vorfälle in Zukunft zu verhindern.

Therac-25
Therac-25

Quellen:

[1] Pfeifer, M. (2017). Berühmt berüchtigte Softwarefehler. Seminar, Universität Koblenz.
[2] Leveson, N. G., & Turner, C. S. (1993). An investigation of the Therac-25 accidents. Computer, 26(7), 18-41.
[3] Wikipedia.org

Für die Umsetzung des 3. Abschnitts wurde Obsidian als Editor verwendet.