-
Notifications
You must be signed in to change notification settings - Fork 56
Berühmte Softwarebugs
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
, weil1900 - 1999 = -99
- Fehler bei der Zinsberechnung
- ...
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.
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
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.
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.
Benutzeroberfläche des Therac-25
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.
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.
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
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.orgFür die Umsetzung des 3. Abschnitts wurde Obsidian als Editor verwendet.
Der Morris Wurm von 1988 ist einer der ersten bedeutsamen Computerwürmer.Er wurde von dem zu dieser Zeit 23-jährigen amerikanischen Informatiker Robert T. Morris programmiert. Aufgrund eines Programmierfehlers verbretiete sich die Malware rasant und verursachte im Lauf der nächsten Monate hohe Schäden durch Systemüberlastungen und -ausfälle. Die Existenz aktiver Wurm-Prozesse auf einem Remote-Rechner sollte vor einer weiteren Ausbreitung bestimmt werden, und nur in einem von 15 Fällen sollte eine Reinfektion stattfinden. Dadurch sollten Abwehrmaßnahmen, die nur die Existenz eines Wurm-Prozesses vortäuschten, unterlaufen werden. Aufgrund eines Programmierfehlers geschah die Reinfektion jedoch in 14 von 15 Fällen. Dadurch wurden viele Rechner überlastet und der Wurm wurde wahrscheinlich schneller entdeckt, als dies anderenfalls möglich gewesen wäre.
![Auszug aus dem kommentierten Code des Wurms] (https://de.wikipedia.org/wiki/Morris_(Computerwurm)#/media/Datei:Morris_Wurm_Qellcode.png)
Quelle: Wikipedia, Morris (Computerwurm)