next up previous contents
Next: 4.6 Allgemeine Suchtechniken zur Up: 4. Software- und Systemsicherheit Previous: 4.4 Probleme und Hindernisse

Unterabschnitte

4.5 Beispiele für Sicherheitsprobleme

In diesem Abschnitt wollen wir einige konkrete Beispiele für Sicherheitsprobleme in Systemen besprechen, an denen Software beteiligt war. Diese Liste hat mehr als einen Zweck:

1.
Sie gibt einen Überblick über konkrete Schwierigkeiten oder Unfälle, die als Beispiele zur Veranschaulichung oder bei der Argumentation für Systemsicherheit dienen können.
2.
Sie vermittelt in Ansätzen ein Gefühl dafür, was alles schiefgehen kann und schult damit das Mißtrauen, das jeder gute Sicherheitsingenieur braucht.
3.
Sie ist recht unterhaltsam und liefert Stoff dafür, abends in der Kneipe Nichtinformatiker zu beeindrucken.
4.
Sie gibt einen (nicht repräsentativen) Überblick darüber, welche Arten von Fehlern es sind, die zu Problemen führen. Diese sind nämlich nur relativ selten auf Kodierfehler zurückzuführen, was viele Informatiker überraschend finden.

4.5.1 Fehlertaxonomie

Für den letzteren Zweck führen wir eine sehr einfache Taxonomie von Fehlern ein, die in Abbildung 4.2 dargestellt ist. \includegraphics[scale=1]{Bild/sichertaxonomie.ps}Diese Taxonomie beschreibt die Herkunft von Fehlern. Sie unterteilt zunächst in die Bereiche der Systementwicklung, nämlich die Bestimmung und Beschreibung der Anforderungen an das System, den Systementwurf (einschließlich Entwurf der äußeren Softwareschnittstellen), die Herstellung (einschließlich Entwurf der internen Softwareschnittstellen, also dem klassischen Softwareentwurf) und den Systembetrieb. In jeder dieser vier Abteilungen unterscheiden wir ferner zwei Fehlerarten, nämlich Fehler durch Unterlassung (omission) und Fehler durch Falschtun (commission). Leider lassen sich Fehler oft nicht eindeutig zwischen Anforderungen und Entwurf oder auch zwischen Entwurf und Implementation zuordnen, weil nicht ganz klar ist, wo eine gewisse Entscheidung hätte getroffen werden sollen; dennoch ist die Betrachtung recht hilfreich.

4.5.2 Beispiele: Entwurfsprobleme

Dezember 1986, ARPAnet-Ausfall: Es gab 7 Verbindungen im Arpanet (heutiges Internet) zwischen Neu-England und dem Rest des ARPAnet. Die Anbindung von Neu-England wurde deshalb für fehlertolerant gehalten. Alle 7 Verbindungen fielen gleichzeitig aus, als ein Glasfaserkabel bei Bauarbeiten beschädigt wurde, weil alle 7 über das gleiche Kabel geführt wurden [Neu95, S. 14]. Entwurfsfehler, Unterlassung.

Osprey Schwenkrotorflugzeug abgestürzt: Einer von fünf Prototypen des Bell Osprey stürzte beim Erstflug kurz nach dem Start ab. Zwei der drei Rollraten-Gyrosensoren (dreifache Redundanz) waren falschherum verkabelt und überstimmten den dritten. Zwei weitere Prototypen flogen erfolgreich mit einem genauso falsch verkabelten Sensor, ohne daß die Piloten oder das Wartungspersonal eine Warnung bekommen hätte [Neu95, S. 37]. Entwurfsunterlassung und Implementationsfalschtun.
Diese Geschichte ist ein eindrückliches Beispiel dafür, wie gute Sicherheitsmaßnahmen (hier: die dreifache Redundanz der Sensoren) die Vorsicht in gefährlicher Weise untergraben können (hier: keine Warnvorrichtung vorgesehen für den Fall, daß die Sensoren nicht übereinstimmen).

April 1990, U-Bahn ohne Fahrer: Eine U-Bahn-Tür schloß nicht richtig. Der Fahrer stieg aus, um das zu beheben. Als die Tür schließlich schloß, fuhr der Zug ohne den Fahrer los, weil jener den Losfahr-Knopf mit Klebeband festgeklebt hatte. Das Losfahren wurde immer automatisch bis zum Türenschließen verhindert, das Anhalten war ebenfalls automatisch. Das Verhalten des Fahrers verletzte die Betriebsregel, niemals die Führerkabine eines automatischen Zuges zu verlassen. Ein ähnliches Ereignis gab es im Dezember 1993.  [Neu95, S. 53f]. Entwurfsunterlassung (das Festkleben hätte der Entwerfer vorhersehen sollen) und Betriebsfalschtun.

1985-1987, Therac-25: Der Therac-25 war ein computergesteuerter Elektronenbeschleuniger zur Strahlentherapie, Nachfolger des nicht computergesteuerten Therac-20. Das System hatte drei schwere Mängel:

Anstatt 80 bis 200 rad erhielten mehrere Patienten Strahlungsdosen von 8000 bis 25000 rad; es gab mehrere Tote und Schwerverletzte. Als erste Korrektur wurden die Cursortasten zum Editieren mechanisch unbrauchbar gemacht. Das Gerät wurde danach vom Markt genommen [Neu95, S. 68ff]. Entwurf und Implementation, Falschtun.

Tödliche Herzschrittmacher: Mehrere Menschen starben, weil ihre Herzschrittmacher ungewollt von außen beeinflußt wurden. Ein 62jähriger wurde mit Mikrowellen gegen Arthritis behandelt. Die Strahlung setzte seinen Herzschrittmacher auf 214 Schläge pro Minute. Ein ähnlicher Fall trat durch die Signale einer Diebstahlsicherung in einem Geschäft ein. In einem dritten Fall wurde der Herzschrittmacher versehentlich vom Arzt ausgeschaltet, als er ihn umprogrammieren wollte [Neu95, S. 70f]. Anforderungen/Entwurf/Implementation?, Unterlassung.

März 1979, 5 Kernkraftwerke abgeschaltet wegen Simulationsfehler: Lange nach ihrem Bau wurde bei 5 amerikanischen Kernkraftwerken entdeckt, daß das Simulationsprogramm Shock II, mit dem die Erdbebenfestigkeit der Konstruktion geprüft worden war, einen Fehler hatte. Alle Kraftwerke wurden abgeschaltet. Im Simulationsprogramm war an einer Stelle eine einfache Summe anstatt einer Summe von Absolutwerten berechnet und weiterverwendet worden [Neu95, S. 79f]. Entwurf, Falschtun.
Es erhebt sich außerdem die Frage, inwieweit die Anforderungen hier überhaupt akzeptabel waren, nämlich daß die Kraftwerksbauten den stärksten jemals in der Baugegend aufgetretenen Erdbeben gemäß einer Simulation widerstehen müssen. Da ein Experiment nicht durchführbar ist und die Simulation nicht validiert werden kann, stellt diese Anforderung in sich bereits ein Risiko dar.

1992, Hundertjährige: Mary Bandar bekam 1992 eine Einladung zum Besuch des Kindergartens, gemeinsam mit anderen, den Kindern des Jahrgangs 1988. Allerdings war sie schon 104. Der Bediener hatte zwar korrekt 1988 für die Datenbankanfrage eingetippt, das Programm davon jedoch nur die letzten zwei Stellen benutzt. G.C. Blodgetts Autoversicherung wurde dreimal so teuer wie zuvor, als er 101 Jahre alt wurde. Das Programm hatte sein Alter als 1 interpretiert und das paßte auf die Definition eines Teenagers als ``jemand unter 20''. Wir sind alle sehr gespannt, was nach Sylvester 1999 alles passieren wird... [Neu95, S. 87]. Anforderungen/Entwurf/Implementation, Unterlassung.

April 1993, Kühlunfall im Stahlwerk: Die Computersteuerung eines deutschen Stahlwerks benutzte die Braunschweiger Normalzeituhr als ständigen Zeitgeber und verkürzte das Kühlen einer Ladung Stahl um eine Stunde, nachdem die Zeit von 1:59 auf 3:00 umgesprungen war, weil die Sommerzeit begonnen hatte. Die unbeabsichtigte Weiterverarbeitung von noch geschmolzenem Stahl richtete erheblichen Schaden im Werk an [Neu95, S. 89]. Entwurf, Unterlassung.
Hier treffen zwei Fehler aufeinander: Nicht nur wurde es unterlassen, die Zeitumstellung zu berücksichtigen, sondern es wird auch nicht das geprüft, auf das es eigentlich ankommt, nämlich die Temperatur des Stahls, sondern ein Surrogat herangezogen, nämlich die Kühlzeit. Es hätte eine Temperaturprüfung stattfinden sollen, die den Unfall verhindert hätte.

Fortran auf Deutsch: Manche Fortran-Compiler erlauben die Ausgabe an units und an devices. Unit 6 ist die Standardausgabe, device 6 ist die Platte. Diverse deutsche Fortran-Benutzer überschrieben versehentlich ihre Platte, weil in Deutsch sowohl unit als auch device mit Einheit übersetzt werden und sie deshalb die beiden Konzepte verwechselten [Neu95, S. 93]. Tja, welcher Klasse soll man das nun zuordnen?

TENEX Paßwortprüfung: Bei der connect Prozedur des TENEX Betriebssystems wurde das eingegebene Paßwort zeichenweise sequentiell mit dem korrekten Paßwort verglichen und bei Auftreten eines falschen Zeichens abgebrochen. Das ermöglicht ein zeichenweises Knacken des Paßworts, indem die Prozedur aus einem Programm heraus aufgerufen wird, wobei das zu testende Paßwort gezielt so im Speicher liegt, daß das nächste unbekannte Zeichen direkt vor einer Seitengrenze steht. Bei hoher Systemlast tritt dann ein Seitenwechselvorgang genau dann auf, wenn dieses Zeichen korrekt ist. Der Seitenwechsel ist beobachtbar, so daß das richtige Zeichen dadurch erkennbar wird [Neu95, S. 109]. Entwurf, Unterlassung.
Die Sicherung gegen willentliche Angriffe wie diesen ist ein Thema für sich, in das wir hier nicht weiter einsteigen wollen. Es ließen sich aber Hunderte weitere Beispiele angeben, die nach Wirkung in folgende Kategorien eingeordnet werden können: unbefugter Zugang, unbefugte Dienstbenutzung, Bereicherung, Spionage, Dienstverhinderung, Zerstörung.

McDonalds Toaster: Für das neue Produkt McMuffin installierte McDonalds in seinen Filialen tausende von speziellen Toastern. Die Zeitgeber in diesen Toastern induzierten Spannungsspitzen im Stromnetz, die bewirkten, daß die Uhren, die die Arbeitszeit der Beschäftigten aufzeichnen, 2 bis 4 Stunden pro Tag vorgingen. Die Gehälter wurden entsprechend zu hoch ausbezahlt. Es wurden 5000 solche Toaster installiert, bevor das Problem gefunden wurde [Neu95, S. 160]. Entwurf, Unterlassung.
Dieses Beispiel ist insofern interessant, als es zeigt, wie ein System, das jahrelang zuverlässig funktioniert hat, aufgrund neuer Betriebsumstände plötzlich versagen kann. Der Fehler liegt hier in unzureichender Robustheit der Uhren gegen rauhe Betriebsbedingungen.

Hohe Verbrauchsrechnungen: Ein Ehepaar in Tampa, Florida, erhielt eine Stromrechnung für einen Monat in Höhe von 4.062.599 Dollar und 57 Cents, nebst einem Angebot ``in monatlichen Raten'' zu zahlen. Der korrekte Betrag war 146,76 Dollar. Der Grund war offenbar ein Bedienungsfehler des Computerpersonals. Malcolm Graham erhielt eine Wasserrechnung für einen Monat über etwa 35 Millionen Liter. Eine neue Wasseruhr war installiert und nicht korrekt eingestellt worden und der Computer hatte die Differenz zum alten Anzeigestand widerspruchslos als Verbrauch akzeptiert. In beiden Fällen hätten Plausibilitätsprüfungen dafür sorgen sollen, daß sich ein Mensch die Rechnungen nochmal vornimmt [Neu95, S. 191]. Entwurf, Unterlassung.

BRAVO editor: Der vermutlich erste WYSIWIG Editor überhaupt, BRAVO von Xerox PARC, wurde durch das Kommando edit in den Änderungsmodus geschaltet. War dieser jedoch schon eingeschaltet, so bedeutete edit stattdessen everything delete insert t und ersetzte den gesamten Dateiinhalt durch das einzelne Zeichen t. Es gab aber immerhin ein Tastaturlogbuch, aus dem man den vorherigen Zustand ausgehend von der ursprünglichen Version der Datei wieder herstellen konnte. Hier wurde offensichtlich keine Analyse typischer zu erwartender Bedienerfehler vorgenommen [Neu95, S. 206]. Entwurf, Unterlassung.

Space Shuttle Missionsabbruch-Problem: Bei Simulatortests für die zweite Space Shuttle Mission tauchte folgendes Problem auf: Die Mannschaft entschied sich zunächst zum Missionsabbruch und leitete ihn ein, brach den Abbruch dann aber ab und ,,flog`` weiter. Als sie etwas später dann doch abbrechen mußten, geriet das Programm in eine enge Endlosschleife. Niemand hatte vorhergesehen, daß eine Mission quasi zweimal würde abgebrochen werden können [Neu95, S. 219]. Entwurf, Unterlassung.

4.5.3 Beispiele: Herstellungsprobleme

April 1981, Space Shuttle Startverzögerung: Vor dem Start des ersten Space Shuttles trat ein sehr subtiler Softwarefehler beim Initialisieren des fünfach redundanten Bordcomputersystems auf, der eine Chance von 1 zu 67 hatte. Der Fehler bewirkte, daß der fünfte Rechner, das Reservesystem, einen Zeitschritt hinter den vier Hauptrechnern lief, deshalb die Datenwörter, die aus seiner Sicht um einen Zeittakt zu früh in den Hauptrechnern auftauchen, als fehlerhaft zurückwies und sich nicht ordentlich in den Betrieb hineinstarten ließ. Der Reserverechner wurde erst kurz vor dem Start in Betrieb genommen, die vier Hauptrechner hatten während des 30stündigen Countdowns korrekt gearbeitet. Der Start verzögerte sich um zwei Tage [Neu95, S. 20f]. Implementationsfehler, Falschtun.

April 1993, Space Shuttle Startverzögerung: 11 Sekunden vor dem Start, unmittelbar vor dem Zünden der Triebwerke, wurde der Countdown abgebrochen, weil angeblich ein Ventil nicht geschlossen hatte. Später stellte sich heraus, daß nur die Software die Sensordaten des Ventils falsch interpretiert hatte. Der nächste Startversuch fand erst dreieinhalb Monate später statt; wegen mehrerer weiterer Probleme startete die Mission letztendlich erst mit mehr als fünf Monaten Verzögerung [Neu95, S. 24f]. Implementationsfehler, Falschtun.

Londoner Rettungsdienst: Einsatzplanungssoftware für Krankenwagen wurde nach Schwierigkeiten bei der Entwicklung trotz mehrerer Ausfälle bei Tests in Betrieb genommen. Resultat: Totalzusammenbruch der Einsatzplanung mit Verzögerungen bis zu 11 Stunden, etwa 20 Tote. Ursachen: System zu komplex, ungenügende Ausbildung der Leit- und Wagenmannschaften [Neu95, S. 72]. Entwurfsfalschtun und Betriebsunterlassung.

Versehentliche Bankbuchung: Die Bank of New York (BoNY) buchte bei einer Zahlung 32 Milliarden Dollar zuviel, als ein 16-bit Zähler unbemerkt überlief. Die meisten Zähler waren 32 bit groß. Die Bank mußte sich 24 Milliarden Dollar für einen Tag leihen, bis der Softwarefehler gefunden und behoben war; die Zinsen dafür betrugen 5 Millionen Dollar! [Neu95, S. 169]. Implementation, Falschtun.
Das Beispiel zeigt, daß ein einziges Auftreten eines einzigen, subtilen und unwahrscheinlichen Softwarefehlers einen großen Schaden anrichten kann -- selbst wenn wie in diesem Fall die Auswirkung später korrigiert werden kann (denn das Geld wurde ja zurücküberwiesen).

4.5.4 Beispiele: Betriebsprobleme

August 1991, Rakete gesprengt: Eine Rakete wurde nach ihrem Start von Cape Canaveral absichtlich im Flug gesprengt, weil sie vom Kurs abgekommen war. Ein Techniker hatte beim Laden der Software in die Rakete einen falschen Knopf gedrückt und die Bodentestversion geladen anstatt der Flugversion [Neu95, S. 29]. Entwurfsunterlassung und Betriebsfalschtun.

April 1993, Intercity-Zusammenstoß: Am Karfreitag stieß ein aus Berlin kommender Intercity bei Wannsee mit einem nach Berlin fahrenden anderen Zug frontal zusammen. Während der vorangegangenen Arbeitswoche war die Strecke wegen Bauarbeiten im einspurigen Betrieb benutzt worden. An diesem Feiertag sollte eigentlich im normalen zweispurigen Betrieb gefahren werden, der Fahrdienstleiter hatte es jedoch versäumt, die Steueranlage entsprechend einzustellen. Soweit noch kein Problem. Der Steuercomputer stellte korrekt das Signal für den Intercity auf Halt. Der Fahrdienstleiter hielt diese Reaktion für einen Systemfehler und benutze ein zusätzliches, für besondere Situationen bei Bauarbeiten vorgesehenes Signal, um trotzdem die Weiterfahrt zu erlauben und versuchte nicht, irgendjemanden wegen des vermeintlichen Fehlers anzurufen. Er übersah dabei, daß sich ein zusätzlicher, nicht fahrplanmäßiger Zug aus der Gegenrichtung näherte. Es gab drei Tote und mehr als 20 Verletzte, obwohl die Züge wegen des Einspurbetriebs nur mit 30 km/h fuhren! [Neu95, S. 51f]. Betrieb, Unterlassung.

Chemiefabrik explodiert: Ein Operateur in einer holländischen Chemiefabrik verwechselte beim Eintippen eines Rezeptes für einen Reaktor den Tank 632 (ein Harz) mit dem Tank 634 (Dicyclopentadien). Er vergaß das vorgeschriebene Nachprüfen. Durch einen Überhitzungsalarm beim Ablauf der Reaktion wurde die Feuerwehr verständigt, war aber mit dieser speziellen Situation überfordert; es erfolgte eine Explosion. 3 Tote, 11 Verletzte, Explosionsteile im Umkreis von 1 Kilometer, mehrere 10 Millionen Mark Sachschaden. Der Operateur war erst drei Monate auf seiner Arbeitsstelle und befand sich noch in Ausbildung [Neu95, S. 61f]. Betrieb, Falschtun (des Operateurs) und Unterlassung (der Firma).

April/Mai 1989, Fehler in Fahrstuhltür: Ein Fehler in Verriegelungsschaltkreisen erlaubte einem Fahrstuhl das Losfahren, obwohl nur eine der zwei Türen geschlossen war. Zweimal im Abstand von 8 Wochen wurde im selben Fahrstuhl ein Mensch getötet, der vom Fahrstuhl mitgeschleift wurde. Bereits 11 Jahre zuvor war der Fehler von der Fahrstuhlfirma erkannt worden, die 1978 auch eine Reparaturvorschrift herausgab (mit nur 1 zusätzlichem Draht). Das Gebäude wechselte 1980 den Eigentümer und 1988 die Fahrstuhlwartungsfirma, es wurden keine Wartungslogbücher geführt. Die Reparatur wurde erst nach den beiden tödlichen Unfällen ausgeführt [Neu95, S. 62f]. Betrieb, Unterlassung.

4.5.5 Analyse

Eine tiefschürfende Analyse der obigen Beispiele im Hinblick auf die Herkunftsarten der Fehler würde die Liste sicherlich überbewerten, denn sie ist alles andere als repräsentativ. Es fallen aber dennoch drei Dinge ins Auge:

1.
Sehr viele der Probleme sind auf Unterlassungen zurückzuführen. Diese Probleme hätten zu einem großen Teil durch die Verwendung einfacher Checklisten beseitigt werden können. Solche Checklisten kann man z.B. durch Analyse früherer Probleme zusammenstellen.
2.
Der weitaus überwiegende Teil der Probleme fällt nicht in den Bereich von schlichten Programmierfehlern, sondern entsteht in den frühen Phasen der Systemgestaltung oder im Betrieb.
3.
Für Systemsicherheit kann man die Software nicht isoliert betrachten, sondern muß ihr Zusammenwirken mit dem restlichen System und dessen Betriebsumgebung verstehen.

Da leider in vielen Firmen ein völlig unterentwickeltes Sicherheitsbewußtsein vorherrscht, müssen Sie, lieber Leser und liebe Leserin, auch wenn Sie sich eigentlich nur als Softwareingenieur verstehen, einen Sinn für Sicherheitsprobleme entwickeln, diesen im Systementwurf kontinuierlich in Betrieb halten und energisch für die Lösung einmal erkannter Sicherheitsprobleme eintreten.


next up previous contents
Next: 4.6 Allgemeine Suchtechniken zur Up: 4. Software- und Systemsicherheit Previous: 4.4 Probleme und Hindernisse
Lutz Prechelt
1999-04-13