# Morris (Computerwurm)

Der Computerwurm Morris wurde am 2. November 1988 ins damals noch junge Internet freigesetzt. Er wurde von dem zu dieser Zeit 23-jährigen amerikanischen Informatiker Robert T. Morris programmiert. Aufgrund eines Programmierfehlers verbreitete sich die Malware rasant und verursachte im Lauf der nächsten Monate hohe Schäden durch Systemüberlastungen und -ausfälle.

## Funktion
### Vervielfältigung

Der Wurm ist in zwei Programme unterteilt. Der sogenannte Grappling Hook (auch Bootstrap oder Vector genannt) besteht aus 99 Zeilen C-Code. Das Ziel dieses Programmes ist es lediglich, auf den zu infizierenden Rechner zu gelangen und von dort den Wurm hochzuladen. Dies tut es, indem es vom schon infizierten Rechner den Wurm anfragt (request), der bereits infizierte Rechner schickt den Wurm dann auf den zu infizierenden Rechner. Dieser Wurm bildet das Main Program namens l1.c. Dieses Main Program versucht dann, die Zielsysteme mit den nachher genannten Verbreitungsmethoden zu infizieren.
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. Auch noch über ein Jahr nach der Freisetzung wurden Aktivitäten von Wurm-Prozessen im Internet festgestellt. Dies kann auf die Verfügbarkeit des Quellcodes bzw. der zugehörigen Dateien zurückgeführt werden. In einigen Fällen waren die offensichtlichen Programmierfehler korrigiert worden.
Verletzlich waren alle Rechner der Firmen DEC und SUN (SUN-3-Systeme) des Netzwerks, die mit BSD UNIX betrieben wurden. Unter UNIX System V betriebene Rechner konnten nur infiziert werden, wenn mit den Programmen SENDMAIL, FINGERD oder REXEC eine Kompatibilität zu BSD UNIX geschaffen worden war. Für die Funktion wurden verschiedene Eigenschaften und Sicherheitslücken auf der Anwendungsebene der TCP/IP-Protokollfamilie genutzt. Insgesamt wurden vier unterschiedliche Verfahren für die Ausbreitung eingesetzt:
* FINGERD
Eine bestimmten Funktion der Standard-C-Bibliothek, die die Länge der Parameter nicht überprüft, wurde im FINGER-Daemon verwendet. Beim Aufruf des Daemon auf einem Remote-Rechner durch einen aktiven Wurm-Prozess wurde eine Zeichenkette als Parameter übergeben, deren Länge den zur Verfügung stehenden Puffer-Bereich überstieg. Dadurch wurden Teile des Daemon-Prozesses im Hauptspeicher überschrieben, darunter auch die Rücksprungadresse der gerade ausgeführten Funktion. Die neue Rücksprungadresse zeigte auf einen Teil des überschriebenen Speichers, in dem jetzt eine Shell mit den Rechten des Daemon aufgerufen wurde. Mit dieser Shell wurde dann eine Kopie der für den Start des Wurms auf diesem Rechner benötigten Dateien übertragen und ausgeführt. Die Existenz dieser Sicherheitslücke war seit langer Zeit bekannt, trotzdem wurden die allgemein verfügbaren Fixes nicht überall eingespielt.
* SENDMAIL
Auch dieser Fehler war bereits seit langer Zeit bekannt; nur ein Teil der Systeme wies ihn noch auf. Die betroffenen Versionen dieses Mail-Daemon waren mit der DEBUG-Option kompiliert worden. Dabei wurde eine durch den Entwickler eingebaute Falltür aktiviert, die auf dem Remote-System die Interpretation einer über Electronic Mail empfangenen Nachricht als Befehl erlaubte. So konnte ein Wurm-Prozess auf einem Remote-Rechner eine Shell starten.
* RSH
Eine wichtige Eigenschaft vieler UNIX-Systeme ist das Konzept des distributed trust, das mit den sogenannten 'r'-Protokollen der BSD-Implementation eingeführt wurde. Inzwischen werden diese Protokolle auch in anderen UNIX-Derivaten eingesetzt. Mit ihrer Hilfe wird es möglich, auf anderen Rechnern bestimmte Befehle oder eine Remote-Shell aufzurufen, wenn der lokale Rechner dort als vertrauenswürdig eingestuft ist. Diese Einstufung erfolgt durch den Eintrag der Rechnernamen in eine spezielle Datei. Da in der Regel eine solche Einstufung auf Gegenseitigkeit beruht, versuchte der Wurm-Prozess, auf den in der lokalen Datei angegebenen Rechnern eine Remote-Shell zu starten.
* Passwörter
Durch die Möglichkeit, auf die gespeicherten Benutzer-Identifikationen und die zugehörigen, verschlüsselten Passwörter zuzugreifen, konnte der Wurm-Prozess einen Brute-Force-Angriff auf einen Account durchführen. Gelang die Bestimmung des verwendeten Passworts, wurde mit der Benutzer-Identifikation versucht, auf einem anderen Rechner des Netzwerks eine Shell zu starten. Dies gelang, wenn der jeweilige Benutzer auf diesem Rechner das gleiche Passwort verwendete.

### Exploits

Die Verwendung eines weiteren Fehlers, der im File Transfer Protocol (FTP) von R. T. Morris Jr. entdeckt wurde, war ebenfalls vorgesehen. Eine Meldung über den Fehler wurde in den Netzen am 2. November 1988 von K. Bostic zusammen mit einem Fix veröffentlicht. Die Frage, ob diese Veröffentlichung zu einer Kurzschlussreaktion bei R. T. Morris Jr. führte, und damit der eigentliche Anlass für die Freisetzung des Wurms war, kann wohl nicht mehr geklärt werden.
Der Zweck des Angriffs war es, zunächst ein minimales Programm im Quellcode (und damit unabhängig von dem jeweiligen Prozessor und dessen Maschinensprache) zu übertragen, zu kompilieren und auszuführen. Die Aufgabe dieses Programms war es, sich beim Wurm-Prozess, der die Ausbreitung initiiert hatte, zu authentisieren, und dann bis zu neunzehn verschiedene Dateien zu empfangen. Bei dem Angriff wurden jedoch nur zwei Dateien verwendet, so dass einige Forscher spekulierten, der Wurm habe sich in einem noch unfertigen Zustand befunden, als die Ausbreitung begann. Die übertragenen Objektcode-Dateien waren jeweils für eine bestimmte Hardware-Betriebssystem-Kombination vorbereitet, die eine der Dateien für DEC-Systeme und die andere für SUN-3-Systeme. Es wurde nicht versucht, die jeweils vorhandene Kombination zu bestimmen, stattdessen wurden die Dateien nacheinander gebunden und das so entstandene Programm gestartet. Konnte dieses ausgeführt werden, war damit der Wurm-Prozess auf dem Rechner aktiviert.
Ein Teil des Wurm-Prozesses war für Camouflage-Techniken ausgelegt. Der Name des aktiven Prozesses wurde in sh umbenannt, die Dateien gelöscht und bei Erreichung einer bestimmten Prozessorzeit die Kontrolle an einen Tochterprozess weitergegeben. Damit sollten auffällige Kennzeichen vermieden werden. Die im Code enthaltenen Zeichenketten und das Verzeichnis der Passwörter waren primitiv verschlüsselt.

## Die Auswirkungen

Robert Morris war Student an der Cornell University, als er mit dem Wurm-Programm experimentierte. Das Programm war ursprünglich für die Zählung von Computern ausgelegt. Wegen eines Fehlers im Code funktionierte das aber nicht wie vorgesehen. Zudem vermehrte der Wurm sich aufgrund eines weiteren Bugs unerwartet schnell.
Nachdem R. Morris (laut eigenen Beteuerungen versehentlich) das Internet damit infiziert hatte, verbreitete sich der Wurm so rasant, dass er bis zu zehn Prozent des damaligen Internetverkehrs verursachte.
Über sein weiteres Verhalten gibt es widersprüchliche Aussagen. Angeblich versuchte er umgehend, den Schaden zu begrenzen und informierte verschiedene Administratoren und Netzwerkexperten und sprach sein weiteres Vorgehen mit seinem Vater ab. Mehreren Quellen nach leugnete er nie, für den Wurm verantwortlich zu sein.

### Die juristischen Folgen

Im Frühjahr 1989 wurde der Cornell Report veröffentlicht, der die Ergebnisse einer Kommission beinhaltet, die die Rolle der Cornell University und seiner Studenten und Mitarbeiter beim Auftreten des Internet-Wurms untersuchte. Daraus ging hervor, dass das Programm von R. T. Morris Jr. seit Mitte Oktober 1988 entwickelt und getestet worden war. Mehrere verschlüsselte Versionen des Quellcodes waren gefunden und entschlüsselt worden. Die in den Kommentaren enthaltenen Wörter wie steal und attack wurden als Indizien für die gezielt destruktive Absicht der Entwicklung gewertet. Die Beteiligung weiterer Personen wurde ausgeschlossen. Als Konsequenz wurde R. T. Morris Jr. zunächst für ein Jahr von der Universität ausgeschlossen.
Im Herbst 1989 wurde er angeklagt, gegen den 1986 erlassenen Computer Fraud and Abuse Act verstoßen zu haben. Bei einer Verurteilung nach dem Strafgesetz drohten ihm eine Höchststrafe von fünf Jahren Gefängnis und ein Bußgeld in Höhe von 250.000 US-Dollar. Der Antrag der Verteidigung, den Fall nicht nach dem Strafgesetz zu verhandeln, wurde abgelehnt. Bei der ab dem 15. Januar 1990 stattfindenden Verhandlung bestand die Jury ausschließlich aus Personen, die über kein technisches Wissen über Computersysteme verfügten. Bereits eine Woche später wurde das Strafmaß angekündigt, die Urteilsverkündung erfolgte jedoch erst am 4. Mai des gleichen Jahres. R. T. Morris Jr. wurde zu drei Jahren Gefängnis auf Bewährung und einem Bußgeld in Höhe von $ 10.000 verurteilt. Außerdem musste er 400 Stunden sozialer Arbeit leisten und die Gerichtskosten in Höhe von etwa $ 150.000 tragen. Die Berufung wurde in New York von einer Kammer des US Court of Appeals for the 2nd Circuit abgelehnt und das Urteil bestätigt. Während des Berufungsverfahrens schätze das U.S. Court of Appeals die Kosten zum Entfernen des Wurms auf $200 – 53,000 per Installation.
In den Vereinigten Staaten von Amerika wurde diesem Fall sehr große Aufmerksamkeit geschenkt. Über eine Woche lang fand sich der Fall im November 1988 auf der Titelseite der New York Times. In dieser und anderen Zeitungen wurde in der Folge über die weitere Entwicklung ausführlich berichtet. Die Journalisten stellten in den ersten Tagen eine starke Belastung für die Forscher dar, die an der Untersuchung und am Reverse Engineering des Wurms beteiligt waren. In der Presse wurde nicht immer korrekt oder sachlich über den Fall und dessen Auswirkungen berichtet.
Obwohl die Beurteilung der Tat durch die User des Internet unterschiedlich ausfiel – die eine Seite sprach von naivem Leichtsinn, die andere von einem unbedachten Versuch, auf die Sicherheitslücken hinzuweisen – bestand Einigkeit in der Auffassung, dass die Folgen nicht tolerierbar seien. Für die Zukunft sollten weitreichende Schutzmaßnahmen getroffen werden.