Proceedings - IT-Sicherheitsinfrastrukturen
Transcrição
Proceedings - IT-Sicherheitsinfrastrukturen
Proceedings of the st 1 Conference Seminar on IT Security ITSEC@i1 ’11 Erlangen, January 24th, 2011 Chair for IT Security Infrastructures University of Erlangen-Nuremberg ITSEC@i1 2011 Programme committee • Zinaida Benenson (Universität Mannheim) • Hans-Georg Eßer (Universität Erlangen-Nürnberg) • Felix Freiling (Universität Erlangen-Nürnberg, Vorsitz) • Christian Moch (Universität Erlangen-Nürnberg) • Tilo Müller (Universität Erlangen-Nürnberg) • Michael Spreitzenbarth (Universität Erlangen-Nürnberg) • Stefan Vömel (Universität Erlangen-Nürnberg) Additional reviewers • Julian Hammer (Universität Erlangen-Nürnberg) • André Hanak (Universität Erlangen-Nürnberg) • Mykola Protsenko (Universität Erlangen-Nürnberg) • Sergiy Protsenko (Universität Erlangen-Nürnberg) • Kilian Redel (Universität Erlangen-Nürnberg) • Arne Hendricks (Universität Erlangen-Nürnberg) 2 ITSEC@i1 2011 Inhaltsverzeichnis • Ein Überblick über verschiedene Schwachstellen des Privaten Modus bei aktuellen Browsern André Hanak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 • Verified by Visa und MasterCard SecureCode, oder: Wie man die Authentifizierung nicht entwerfen sollte Sergiy Protsenko . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13 • (Un-)sicherheit in komplexen Systemen Kilian Redel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 • Practical capabilities for UNIX Mykola Protsenko . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 • An MD5 collision based attack on the SSL key infrastructure Julian Hammer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3 Ein Überblick über verschiedene Schwachstellen des Privaten Modus bei . . . ITSEC@i1 2011 2-1 Ein Überblick über verschiedene Schwachstellen des Privaten Modus bei aktuellen Browsern André Hanak Universität Erlangen Zusammenfassung—Der Beitrag beschreibt, wie es möglich ist das Surfverhalten eines Nutzers zu analysieren, obwohl dieser den Privaten Modus seines Browsers verwendet. Besonderer Wert wird dabei auf zwei Angriffsszenarien gelegt: Auf der einen Seite wird erläutert, wie die Analyse des Nutzerverhaltens auf der Seite eines Webseitenbetreibers aussehen kann. Dies betrifft vor allem, inwiefern man Benutzer während ihrer Aktivitäten im Internet verfolgen kann. Auf der anderen Seite wird untersucht, ob eine Person, die lokal vollen Zugriff auf den Computer hat, an Daten gelangen kann, die eigentlich durch den Privaten Modus geschützt werden sollen. Dabei werden verschiedene Szenarien erläutert und beispielhaft bekannte Schwachstellen genauer untersucht. Browser wird anschließend untersucht wie die Browserhersteller den Privaten Modus ankündigen und danach eine Studie zu dessen Verwendung vorgestellt. Im Kapitel III geht es weiter ins Detail, dort werden Sicherheitsziele definiert, die Browser einhalten sollen. Etwas praktischer werden dann die Einzelheiten der Implementierungen in Kapitel IV analysiert und Abweichungen vom definierten Sicherheitsmodell deutlich herausgearbeitet. Nach einer Aufzählung der Sicherheitslücken in den Browsern selbst, werden anschließend Probleme erläutert, die bei Verwendung von Erweiterungen auftreten. Dabei wird auch auf einen Lösungsvorschlag näher eingegangen und dieser hinsichtlich der Praxistauglichkeit bewertet. I. E INF ÜHRUNG II. G RUNDLAGEN Um die Sicherheit des Privaten Modus zu untersuchen ist es zunächst einmal nötig Grundlagen zu erläutern. Es folgt eine Übersicht über die verschiedenen Browser und ihre Art Private Browsing umzusetzen. Der Private Modus ist in den letzten Jahren zu einem beliebten Feature in Browsern geworden. Die vier am weitesten verbreiteten Browser [10] (stand Oktober 2010) Firefox, Internet Explorer, Chrome und Safari unterstützen diesen in ihren aktuellen Versionen. Durch die Verwendung soll im Allgemeinen verhindert werden, dass andere Personen herausfinden können welche Internetseiten besucht wurden, während der Private Modus aktiviert war. In einem Konferenzbeitrag von Aggarwal, Bursztein, Jackson und Boneh mit dem englischen Titel An Analysis of ” Private Browsing Modes in Modern Browsers“ [1] analysieren die Autoren die Sicherheit dieser Modi exakt. Sie zeigen in diesem Artikel wie man automatisiert nach Sicherheitslücken suchen kann und stellen die Ergebnisse vor. Dieser Beitrag steht inhaltlich in engem Zusammenhang mit meiner Arbeit. Der oben genannt Beitrag nennt zwei im Grundsatz verschiedene Sicherheitsziele. Auf der einen Seite steht der Schutz vor Personen, die vollen Zugriff auf den verwendeten Computer haben. Sie werden als lokaler Angreifer bezeichnet. Es könnten beispielsweise Familienmitglieder sein, die sich einen Rechner teilen. Auf der anderen Seite steht der Schutz vor Personen, die über diesen direkten Zugang nicht verfügen, dem entfernten Angreifer. Beispielsweise soll der Betreiber einer Internetseite keinen Zusammenhang zwischen dem Besuch seines Angebots mit und ohne Privaten Modus herstellen können. Letzteres wird von den aktuellen Browsern oft nur teilweise oder überhaupt nicht umgesetzt. Dieser Beitrag ist nach dem Top-Down Ansatz gestaltet. Am Anfang steht eine Einführung in den Privaten Modus. Beginnend mit einem kurzen Überblick über die verschiedenen Dieser Beitrag entstand im Rahmen des Konferenzseminars IT” Sicherheit“, das im Wintersemester 2010/11 an der Universität ErlangenNürnberg durchgeführt wurde. Es wurde organisiert vom Lehrstuhl für ITSicherheitsinfrastrukturen (Prof. Dr. F. Freiling). André Hanak A. Überblick über die vier Browser Der Firefox Browser von Mozilla unterstützt den Privaten Modus ab Version 3.5 vom 30.06.2009 [7]. Er lässt sich über das Extras“ Menü starten. Dabei werden alle aktuell ” geöffneten Fenster und Tabs geschlossen. Abgesehen von einem Vermerk in der Titelleiste des Fensters weist während der Verwendung nichts auf die private Sitzung hin. Beendigt wird sie wieder über das Menü Extras“. Vorher geöffnete Tabs ” und Fenster werden wieder hergestellt. Der Internet Explorer von Microsoft unterstützt die Funktion ab Version 8 [6]. Die Funktion heißt hier InPrivate-Browsen“. ” Startet man den Modus, so wird ein neues Fenster geöffnet. Der Benutzer bekommt durch eine Schaltfläche auf der Adressleiste mit der Aufschrift InPrivate“ angezeigt, dass er diese ” Funktion gerade verwendet. Google Chrome nennt das Feature Inkognito Modus“. ” Dieser lässt sich öffnen, indem man auf die EinstellungsSchaltfläche klickt und dann ein neues Inkognito Fenster über das Menü öffnet. Der Benutzer wird auf den Privaten Modus mit Hilfe eines Icons hingewiesen. In Safari heißt der Modus Privates Surfen“ er lässt sich ” über das Optionsmenü starten. Es erscheint eine Dialogbox, die bestätigt werden muss. Anschließend befinden sich alle geöffneten Fenster im Privaten Modus. Im Safari 4 ist der einzige Hinweis auf die Verwendung ein Haken vor dem entsprechenden Menüeintrag. Seit Safari 5 befindet sich auch noch ein entsprechender Hinweis in der Adressleiste. Details zu den Implementierungen werden in Kapitel IV-A genauer untersucht. 4 Ein Überblick über verschiedene Schwachstellen des Privaten Modus bei . . . ITSEC@i1 2011 2-2 Abbildung 1: Verwendung des Privaten Modus [1] B. Vermarktung des Privaten Modus Es gibt unterschiedliche Gründe den Privaten Modus zu verwenden. Alle vier Browserhersteller präsentieren das Feature auf ihren Internetseiten. Im Folgenden möchte ich kurz zusammenfassen welche Gründe für die Benutzung genannt werden und wovor der Private Modus exakt schützt. Firefox beschreibt auf der Internetseite [8] sehr exakt was den Privaten Modus von einer einer normalen Sitzung unterscheidet. Interessant ist dabei vor allem ein Absatz, in dem klargestellt wird, dass kein Schutz vor einem entfernten Angreifer besteht, obwohl man beim Firefox sehr wohl bemüht ist davor Schutz zu bieten. Ein Grund zur Verwendung des Privaten Modus wird nur sehr allgemein formuliert: Teilt man sich mit anderen Personen einen Rechner, dann möchte man vermeiden, dass diese Personen herausfinden können welche Internetseiten man besucht hat. Auf der Seite des Internet Explorer [6] heißt es: Endlich ” können Sie ein besonderes Geschenk bestellen, ohne dass die Familie versehentlich darüber stolpert, oder einen freigegebenen Computer verwenden, ohne Spuren zu hinterlassen.“. Vor was der Modus genau schützt ist nicht beschrieben. Das Planen von Überraschungen oder Geburtstagen nennt Google auf der Internetseite zu Chrome [5]. Dabei wird zusätzlich noch einmal darauf hingewiesen, dass heruntergeladene Dateien auf dem Computer vorhanden bleiben und dass Internetseiten das Ziel des Inkognito Modus unter Umständen untergraben können. C. Studie über die Benutzung des Privaten Modus Aggarwal, Bursztein, Jackson und Boneh [1, S. 8] führten eine Studie durch, in der sie die Verwendung des Privaten Modus verschiedener Browser bei verschiedenen Kategorien von Internetseiten untersuchen. Zur Ermittlung dieser Daten wurden Werbeanzeigen geschaltet. Diese enthielten JavaScript Code, der erkennen kann ob der Private Modus gerade aktiviert ist. Um dies festzustellen nutzen die Entwickler aus, dass alle gängigen Browser noch nicht besuchte Links in blau darstellen, während Seiten, die in der Browserchronik bereits vorhanden sind lila eingefärbt werden. Ein Link zu einer bereits in einem Frame angezeigten Seite wird also normalerweise immer lila dargestellt. Eine Ausnahme stellt das Verhalten im Privaten Modus dar: Hier sind alle Links in blauer Schriftfarbe, da keine Chronik existiert. Die Ergebnisse sind in Abbildung 1 dargestellt. Aus der Grafik kann man zwei Aussagen direkt ableiten. Zum einen André Hanak fällt auf, dass auf Erotikseiten der Private Modus verstärkt eingesetzt wird, andererseits hängt die Verwendung auch deutlich vom Typ des Browsers ab. Während auf Erotikseiten im Durchschnitt etwa 8% den Privaten Modus verwenden sind es bei Seiten auf denen man Geschenke kaufen kann oder auf Nachrichtenseiten etwa 6%. Man kann also davon ausgehen, dass der Private Modus nicht überwiegend dazu verwendet wird, um den Kauf von Geschenken über das Internet zu verstecken. Ein anderer interessanter Aspekt ist, dass die Häufigkeit der Nutzung offensichtlich stark vom verwendeten Browser abhängt. Benutzer von Safari und Firefox aktivieren den Privaten Modus offenbar wesentlich häufiger, als beispielsweise diejenigen, die den Internet Explorer verwenden. Auf der Grafik erkennt man, dass die Verwendung des Modus auf Nachrichtenseiten zwischen 1% (Internet Explorer 8) und knapp 10% (Mozilla Firefox) schwankt. Eine mögliche Erklärung für diese Statistik ist die Art und Weise, wie die verschiedenen Browser auf den aktivierten Modus hinweisen. Firefox und Safari weisen eher unauffällig darauf hin, während der Indikator bei Google Chrome oder dem Internet Explorer sehr viel auffälliger ist. Der Internet Explorer verwendet einen Hinweis in der Adressleiste (Abbildung 2), hingegen zeigt Abbildung 3 das deutlich sichtbare Icon von Google Chrome. Im Gegensatz dazu ist im Firefox der Hinweis in der Titelleiste (Abbildung 4) leicht zu übersehen. Bei Safari (Abbildung 5) ist in der Version, die während der Studie aktuell war, auf der normalen Oberfläche kein Hinweis zu sehen. Man kann nur über das Einstellungsmenü herausfinden, dass der Private Modus gerade verwendet wird. Es liegt also der Verdacht nahe, dass ein leicht zu übersehender Indikator dazu führt, dass die Benutzer vergessen den Privaten Modus wieder auszuschalten. Eine weitere Ursache für die so unterschiedliche Nutzung ist die unterschiedliche Implementierung in den Browsern. Während Internet Explorer und Chrome das gleichzeitige Surfen mit und ohne Privaten Modus durch das Öffnen eines zusätzlichen privaten Fensters erlauben ist es bei Firefox und Safari nicht möglich gleichzeitig privat und normal zu surfen. III. S ICHERHEITSMODELL UND S ICHERHEITSZIELE Um die Sicherheit des Privaten Modus zu untersuchen ist es zunächst einmal nötig formal zu spezifizieren was dieser genau leisten soll und vor welchen Angriffszenarien man sich dabei schützen muss. Wie in dem Konferenzbeitrag [1, S. 2] werden zwei Angriffszenarien definiert: Der lokale Angreifer 5 Ein Überblick über verschiedene Schwachstellen des Privaten Modus bei . . . ITSEC@i1 2011 2-3 Abbildung 2: Bildschirmfoto Internet Explorer Abbildung 4: Bildschirmfoto Firefox Abbildung 3: Bildschirmfoto Chrome Abbildung 5: Bildschirmfoto Safari ist eine Person, die direkten Zugriff auf den Computer hat. Das zweite Szenario sieht einen entfernten Angreifer vor. Dieser kontrolliert die Internetseite, die im Privaten Modus besucht wird. Ein weiterer Begriff ist der Benutzer, hiermit wird im folgenden die Person bezeichnet, die den Privaten Modus verwendet. auf den Rechner, so ist es ein leichtes für den Angreifer an diese Informationen zu kommen, ganz egal wie gut oder schlecht der Private Modus im Browser implementiert ist. Beispielsweise könnte ein Keylogger installiert werden oder der Netzwerkverkehr mitgehört werden. Der Angriff wird alleine auf die anschließende Analyse beschränkt. Daher kann die Sicherheit theoretisch dadurch gewährleistet werden, dass nach Beendigung des Privaten Modus alle hinterlassenen Spuren zuverlässig gelöscht werden. Ganz so einfach stellt sich das dann aber doch nicht dar. Da die verschiedenen Browser auch im Privaten Modus eine möglichst hohe Benutzerfreundlichkeit erreichen sollen, ist es nicht von Vorteil alle Veränderungen wieder zu löschen. So soll es beispielsweise auch möglich sein im Privaten Modus Lesezeichen anzulegen, die erhalten bleiben. Es ist also nötig Änderungen zu klassifizieren: 1) Änderungen, die von der Internetseite angestoßen werden und keinerlei Interaktion des Benutzers benötigen, beispielsweise Einträge im Cache, gespeicherte Cookies oder Einträge in der Browserchronik. A. Lokaler Angreifer Vermieden werden soll im Falle des lokalen Angreifers, dass auf dem Rechner nach Beendigung des Privaten Modus Spuren zurückgelassen werden, die dem Angreifer Rückschlüsse auf die besuchten Seiten zulässt. Konkret heißt das, dass ein Angreifer, der die Kontrolle über den Rechner des Benutzers übernommen hat, nachdem der Benutzer den Privaten Modus beendet hat, keinerlei Informationen über das Verhalten des Benutzers während des privaten Surfens erhalten darf. Dies wird weiter unten genauer beschrieben. Besonders wichtig ist dabei, dass der Angreifer erst Zugriff erlangt, nachdem der Private Modus beendet wurde. Erlangt er vorher oder auch während des privaten Surfens Zugriff André Hanak 6 Ein Überblick über verschiedene Schwachstellen des Privaten Modus bei . . . ITSEC@i1 2011 2-4 2) Änderungen, die von der Internetseite angestoßen werden, aber zusätzlich Interaktion des Benutzers benötigen. Beispiele dafür sind das generieren eines Client Zertifikats oder das Speichern von Passwörtern. 3) Änderungen, die vom Benutzer angestoßen werden. Zum Beispiel das Hinzufügen eines Lesezeichens oder das Herunterladen einer Datei. 4) Änderungen, die nicht anwenderspezifisch sind. Hierunter fällt zum Beispiel das Installieren einer Browser Aktualisierung oder das Aktualisieren der Liste zum Schutz vor Phishing. Alle Browser haben als Ziel Änderungen zu verwerfen, wie sie im Punkt (1) beschrieben sind. Erfüllen sie dieses Ziel nicht, so kann dies als Verstoß gegen das Sicherheitsmodell, also als Sicherheitslücke, aufgefasst werden. Die restlichen Punkte stellen eine Grauzone dar. Welche Arten von Änderungen verworfen werden sollen unterscheidet sich stark, je nach Browser. Aber auch das Verhalten eines Browsers ist oft inkonsistent. Diese Fälle werden im nächsten Kapitel ausführlich beschrieben. Um das Sicherheitsmodell exakter zu beschreiben werden im folgenden die Fähigkeiten des Angreifers definiert: • Der Angreifer tritt nicht in Aktion, bis zu dem Zeitpunkt, an dem der Benutzer den Privaten Modus verlässt. Ab diesem Zeitpunkt bekommt der Angreifer vollen Zugriff auf die Maschine. Dies limitiert den Angreifer auf die anschließende Analyse forensischer Art. Dabei werden in dieser Arbeit Spuren ignoriert, die nur im flüchtigen Speicher vorhanden sind. Diese Spuren zu verwischen kann sehr kompliziert werden und kein Browser besitzt momentan diese Fähigkeit. • Eine weitere Voraussetzung ist, dass der Angreifer keinen Zugriff auf Informationen im Netzwerk hat, während der Benutzer in einer privaten Sitzung ist. Dies ist einfach damit erklärbar, dass in der Arbeit die Sicherheit der Browser untersucht werden soll. Ein Browser kann aber beispielsweise nicht verhindern, dass der Netzwerkverkehr mitgeschnitten wird. Ein Problem für die Einhaltung der Ziele von privatem Browsern stellen die Internetseiten dar. Als Beispiel sei folgendes Szenario gegeben: Ein Benutzer loggt sich innerhalb des Privaten Modus auf einem Forum ein. Dieses hat auf der Hauptseite für alle Besucher sichtbar einen Abschnitt ”Benutzer, die heute Online waren”. In diesem Fall wird das Sicherheitsziel verletzt. Allerdings ist ein hundertprozentiger Schutz technisch kaum realisierbar. Denkbare Lösungsmöglichkeiten sind: • Einführen einer Liste mit Internetseiten, ähnlich wie bei Phishing, die im Privaten Modus nicht angezeigt werden sollte. • Einführung einer elektronischen Kennzeichnung auf Internetseiten, die angibt, dass diese Seite nicht gegen Sicherheitsziele des Privaten Modus verstößt. • Einführung eines Logos, welches nach Prüfung durch eine offizielle Stelle auf einer Internetseite angezeigt werden kann. Ist dieses Logo vorhanden weiß der Benutzer, dass die Seite im Privaten Modus gefahrlos besucht André Hanak werden kann. Es gibt auch sonst verschiedene Schwierigkeiten beim Einhalten der Sicherheitsziele gegenüber einem lokalen Angreifer. Eine davon ist das verwendete Betriebssystem. Dabei gibt es zwei Probleme. Ein Problem sind DNS1 Anfragen. Diese müssen für jede besuchte Domain ausgeführt werden, dabei speichern viele Betriebssysteme die Anfragen in einem lokalen Zwischenspeicher. Anhand der eingetragenen Domains und der zugehörigen TTL2 lässt sich dann herausfinden welche Seite wann besucht wurde. Eine korrekte Implementierung des Privaten Modus darf also bei Durchführung der DNS Abfragen keine Einträge im Zwischenspeicher des Systems hinzufügen oder entfernen. Eine andere, wesentlich aggressivere, Möglichkeit besteht darin den kompletten DNS Zwischenspeicher zu leeren. Die DNS Problematik wird jedoch momentan von keinem großen Browser aufgegriffen. Das andere Problem ist das Auslagern von Hauptspeicherseiten auf der Festplatte. Ist im Hauptspeicher zu wenig Platz, dann kann das Betriebssystem Teile davon auf der Festplatte auslagern. Dies erfolgt unter Windows in einer Auslagerungsdatei auf der Festplatte und unter Linux meist in einer extra Partition auf der Festplatte. In dieser Datei oder Partition könnten sich nur Informationen über das Nutzungsverhalten befinden. Aggarwal, Bursztein, Jackson und Boneh [1, S. 3] haben ein Experiment durchgeführt, welches diese Theorie eindeutig belegt: Unter Ubuntu 9.10 Linux und Firefox 3.5.9 surften sie im Privaten Modus. Nach Beendigung starteten sie ein Programm mit einem Speicherleck, so dass das Betriebssystem gezwungen wurde Teile des Hauptspeichers auszulagern. In diesem Fall wurde eine Auslagerungsdatei verwendet. Diese Auslagerungsdatei wurde untersucht und es wurden darin sowohl Internet Adressen, als auch Links und auch Text der Internetseiten gefunden. Zuletzt möchte ich ein paar Implementierungsmöglichkeiten gemäß ihrer Realisierbarkeit erläutern. Eine auf den ersten Blick sinnvoll erscheinende Variante ist die Verwendung von Schnappschüssen (engl. snapshot) einer virtuellen Maschine. Vor dem Surfen im Privaten Modus wird dann ein Schnappschuss angelegt. Wird der Modus beendet, so wird der Rechner wieder auf den Stand vor dem Starten des Privaten Modus zurückgesetzt. Dieses Verfahren hat aber sehr viele Nachteile, so dass die Verwendung keinen Sinn macht: Änderungen, die der Benutzer explizit selber veranlasst (siehe Punkte (3) und (4) in obiger Aufzählung) werden danach wieder verworfen. Dies betrifft Sicherheitsupdates, heruntergeladene Dateien und Einstellungen wie die Startseite oder verwendete Symbolleisten. Dies führt zu schlechter Benutzerfreundlichkeit und damit zu frustrierten Benutzern. Eine sehr einfache Möglichkeit obige Lösung zu implementieren bieten Benutzerprofile wie sie beispielsweise Mozilla 1 DNS: Domain Name System, dient u.A. der Zuordnung von menschenlesbaren Namen zu IP Adressen 2 TTL: Time to live. Jeder Eintrag im Zwischenspeicher erhält ein Ablaufdatum. Kennt der Angreifer dieses und ist beispielsweise bekannt, dass dieses beim Eintragen in den Speicher gewöhnlich eine Stunde in die Zukunft gesetzt wird, so lässt sich der Zeitpunkt des Eintragens berechnen. 7 Ein Überblick über verschiedene Schwachstellen des Privaten Modus bei . . . ITSEC@i1 2011 2-5 Firefox bereits verwendet. Man könnte beim Start des Privaten Modus eine Sicherungskopie des Profils anlegen und diese nach Beendigung wieder herstellen. Dieses Verfahren hat aber im Wesentlichen dieselben Nachteile wie oben bereits beschrieben. Alle vier großen Browser verwenden die gleiche Möglichkeit. Einerseits versuchen sie möglichst wenig Daten zu speichern, so wird beispielsweise die Chronik erst gar nicht mitgeschnitten. Andererseits werden Daten, die gespeichert werden müssen, nach der Beendigung wieder gelöscht. Cookies sind ein gutes Beispiel dafür. Soweit die Theorie, tatsächlich werden jedoch nicht alle Daten korrekt gelöscht, wie in Kapitel IV gezeigt wird. Tabelle I: Welche Daten aus dem normalen Modus sind während einer privaten Sitzung verfügbar? [1, S. 7] B. Entfernter Angreifer Tabelle II: Welche Daten aus dem Privaten Modus sind nach Ende der Sitzung noch verfügbar? [1, S. 7] Im Gegensatz zum lokalen Angreifer hat der entfernte Angreifer keinen Zugriff auf den Computer des Benutzers. Dafür kontrolliert er eine oder mehrere Internetseiten, die der Benutzer mit Hilfe des Privaten Modus besucht hat. Die meisten Browser versuchen auch vor diesem Angriffszenario in einem gewissen Grad zu schützen. Eine Ausnahme stellt Safari dar – der Browser ignoriert das Modell des entfernten Angreifers komplett. Ziele: 1) Besucht ein Benutzer dieselbe Internetseite sowohl mit als auch ohne Privaten Modus, so darf der Webseitenbetreiber keine Verbindung zwischen diesen beiden Seitenaufrufen herstellen können. Dieses Ziel wird bei Chrome, Firefox und Internet Explorer zumindest teilweise implementiert indem Cookies im Privaten Modus nicht verfügbar sind, die ohne Privaten Modus gesetzt wurden. 2) Besucht der Benutzer eine Internetseite in zwei verschiedenen privaten Sitzungen, so darf es nicht möglich sein den Zusammenhang zu einem Benutzer herzustellen Als Beispiel sei folgendes Szenario gegeben: Ein Benutzer besucht eine Internetseite das erste mal ohne Privaten Modus, danach ein zweites mal im Privaten Modus. Anschließend nochmal ohne und beim vierten und letzten mal wieder unter Schutz der Privatsphäre. Anschließend soll der entfernte Angreifer nicht erkennen können, dass es sich bei dem zweiten und vierten mal um denselben Benutzer handelte. Dieses Ziel ist in den Browsern zumindest teilweise dadurch umgesetzt, dass Cookies wieder gelöscht werden, die während der privaten Sitzung gespeichert wurden. 3) Eine Internetseite soll nicht in der Lage sein zu erkennen, ob der Private Modus gerade aktiviert ist oder nicht. Wie in Kapitel II-C bereits erwähnt wurde, hat zur Zeit der Studie von Aggarwal, Bursztein, Jackson und Boneh [1] kein Browser dieses Ziel umsetzen können. Die Ziele (1) und (2) sind für Browser sehr schwer einzuhalten. Es gibt zahlreiche Möglichkeiten Benutzer zu verfolgen (engl. tracking), die – wenn überhaupt – nur mit enormen Aufwand unterbunden werden können. Erkennungsmerkmale, die dazu verwendet werden können sind beispielsweise die IP André Hanak Chronik Cookies Lokaler Speicher HTML5 Lesezeichen Passwort Datenbank Formular Autovervollständigung Selbst signierte SSL Zertifikate Einträge in der Download Liste Heruntergeladene Dateien Suchausdrücke und Suchfeld Cache Client Zertifikate Anwender-spezifische Protokolle Seiten-spezifische Zoomstufe Chronik Cookies Lokaler Speicher HTML5 Lesezeichen Passwort Datenbank Formular Autovervollständigung Selbst signierte SSL Zertifikate Einträge in der Download Liste Heruntergeladene Dateien Suchausdrücke und Suchfeld Cache Client Zertifikate Anwender-spezifische Protokolle Seiten-spezifische Zoomstufe FF ja nein nein ja ja ja ja nein ja ja nein ja ja nein FF nein nein nein ja nein nein nein nein ja nein nein ja ja nein Safari ja ja ja ja ja ja ja ja ja ja nein ja n/a n/a Safari nein nein nein ja nein nein ja nein ja nein nein n/a n/a n/a Chrome nein nein nein ja ja ja ja ja ja ja nein ja n/a ja Chrome nein nein nein ja nein nein ja nein ja nein nein n/a n/a nein IE nein nein nein ja ja nein ja n/a ja ja nein ja n/a n/a IE nein nein nein ja nein nein ja n/a ja nein nein ja n/a n/a Adresse, die Bildschirmauflösung, installierte Plugins, installierte Schriftarten oder die Zeitzone. Abgesehen von der IP sind alle Eigenschaften über Javascript auslesbar. Die Electronic Frontier Foundation zeigte im Projekt Panopticlick [2, 3], dass für nahezu alle Browser ein einzigartiger Fingerabdruck (engl. Fingerprint) erstellbar ist, der dazu verwendet werden kann Benutzer zu verfolgen und damit die Ziele (1) und (2) komplett zu umgehen. Torbutton [9] ist ein Browserplugin, welches mit Hilfe des Tor3 Dienstes die IP Adresse verschleiert und gleichzeitig Maßnahmen ergreift um das Erstellen eines Fingerabdrucks zu erschweren. Die Verwendung des Plugins hat jedoch einen erheblichen Verlust in Geschwindigkeit und Komfort zur Folge. IV. A BWEICHUNGEN VON DEN S ICHERHEITSZIELEN A. Unterschiede in den Implementierungen der verschiedenen Browser In Kapitel II-A wurde bereits ein Überblick über die verschiedenen Browser und deren Benutzeroberfläche gegeben. Es werden unterschiedliche Indikatoren zur Kennzeichnung des aktivierten Privaten Modus verwendet. Neben der Benutzerfreundlichkeit spielt bei der Wahl des Indikators auch 3 Tor ist ein Netzwerk zur Anonymisierung. Es verhindert die Identifikation eines Benutzers anhand seiner IP Adresse, indem der Netzwerkverkehr über zahlreiche Computer geleitet wird. 8 Ein Überblick über verschiedene Schwachstellen des Privaten Modus bei . . . ITSEC@i1 2011 2-6 Tabelle III: Welche Daten sind während des Privaten Modus verfügbar? [1, S. 7] Chronik Cookies Lokaler Speicher HTML5 Lesezeichen Passwort Datenbank Formular Autovervollständigung Selbst signierte SSL Zertifikate Einträge in der Download Liste Heruntergeladene Dateien Suchausdrücke und Suchfeld Cache Client Zertifikate Anwender-spezifische Protokolle Seiten-spezifische Zoomstufe FF nein ja ja ja nein nein ja ja ja nein ja ja ja nein Safari nein ja ja ja nein nein ja nein ja nein ja n/a n/a n/a Chrome nein ja ja ja nein nein ja nein ja nein ja n/a n/a ja IE nein ja ja ja nein nein ja n/a ja nein ja ja n/a n/a die Privatsphäre eine Rolle. Einer Person, die dem Benutzer über die Schulter schaut, fällt es bei deutlich erkennbaren Indikatoren leichter herauszufinden, ob der Modus aktiv ist. Im Safari 4 wurde das Problem ernst genommen, im Firefox fällt der Hinweis in der Titelleiste zumindest nicht sofort auf. In allen anderen Browsern ist der Hinweis in oder neben der Adressleiste deutlich erkennbar. Im Folgenden soll das interne Verhalten genauer untersucht werden. Aggarwal, Bursztein, Jackson und Boneh [1, S. 4] haben untersucht, wie sich verschiedene Browserfunktionen im Privaten Modus verhalten. Die Tests wurden unter Windows 7 mit den Standardeinstellungen der Browser durchgeführt. Die Ergebnisse sind in den Tabellen I, II und III zusammengefasst. Tabelle I beschreibt inwiefern im normalen Modus gespeicherte Daten im Privaten Modus zugreifbar sind. Das Erschweren des Zugriffs auf solche Daten dient im Wesentlichen dem Schutz vor dem entfernten Angreifer aus III-B. Dass Safari dieses Modell vollständig ignoriert sieht man in der zweiten Spalte. Alle Daten, mit Ausnahme des Caches, sind beim privaten Surfen zugänglich. Bei allen Browsern sind die Chronik, Lesezeichen und gespeicherte Passwörter im Privaten Modus verfügbar. Firefox, Chrome und der Internet Explorer blockieren hingegen öffentlich gesetzte Cookies oder Inhalte des HTML5 Speichers. In anderen Dingen verhalten sich die Browser oft inkonsistent. So verwendet Firefox ohne Privaten Modus generierte Client Zertifikate auch in diesem Modus. Dies ist widersprüchlich zum Sperren von Cookies, denn mit Client Zertifikaten lässt sich genauso wie bei Cookies eine Verbindung zwischen dem Besuchen einer Seite mit und ohne Privaten Modus herstellen. Tabelle II zeigt, ob Daten, die während des Surfens im Privaten Modus anfallen, auch nach Beendigung dieses Modus noch verfügbar sind. Dies stellt den Kern des Privaten Modus dar. Die Sicherheit vor einem lokalen Angreifer soll damit gewährleistet werden. Alle Browser versuchen dieses Ziel umzusetzen. Allen Browsern ist gemeinsam, dass sie die Chronik, Cookies und den HTML5 Speicher löschen. Alle übernehmen Lesezeichen und heruntergeladene Dateien. Akzeptiert und speichert ein Benutzer ein selbst signiertes SSL Zertifikat, so wird dieses nur im Firefox wieder verworfen. Tabelle III ist eine Übersicht darüber, welche Informationen während ein und derselben privaten Sitzung temporär André Hanak verfügbar sind. Firefox schreibt nichts in die Chronik, merkt sich keine Passwörter oder Suchausdrücke. Im Gegensatz dazu werden Cookies zunächst gespeichert und erst am Ende der Sitzung gelöscht. Die Cookies und auch der Cache werden aber nur im Arbeitsspeicher abgelegt, so dass nach einem möglichen Absturz keine Spuren hinterlassen werden. Firefox ist der einzige Browser, der im Privaten Modus Einträge in die Download Liste schreibt. Auch diese werden allerdings am Ende der Sitzung wieder gelöscht. B. Schwachstellen aufgrund der Implementierungen und Inkonsistenzen Aufgrund der oben genannten unterschiedlichen Implementierungen und Inkonsistenzen in den verschiedenen Browsern entstehen bereits zahlreiche Probleme, die mit der Einhaltung der Sicherheitsziele bezüglich der Privatsphäre im Widerspruch stehen. Ich möchte hier vier dieser Probleme beschreiben. • • • • Ein Problem ist eine Funktion in HTML5, die sich custom protocol handlers“ (CPH) nennt. Diese Funktion ” erlaubt es Internetseiten eigene Protokolle zu definieren. Das eigene Protokoll xyz“ kann in einer URL der ” Form xyz://Adresse/Pfad“ verwendet werden. Firefox ” speichert diese Daten jedoch auch nach Ende der privaten Sitzung. Verwendet eine vom Benutzer im Privaten Modus besuchte Internetseite so ein CPH, so kann der Angreifer im Nachhinein nachvollziehen, dass diese bestimmte Seite schon einmal besucht wurde. Client Zertifikate sind ein weiteres Problem. Sie können zur Autorisierung dienen und beispielsweise die Anmeldung über eine Session Cookie ersetzen. Auch diese Funktion implementiert nur Firefox und behält das Zertifikat auch nach Ende der privaten Sitzung. Wurde im Privaten Modus also eine Seite aufgerufen, die diese Technik verwendet, so weiß der Angreifer zumindest, dass die Seite schon einmal besucht wurde. Ein weiteres Problem bei dem Zertifikate eine Rolle spielen stellen selbst signierte Serverzertifikate dar. Da von einer vertrauten Authentifizierungsstelle unterschriebene Zertifikate in der Regel kostenpflichtig sind, verwenden viele Internetseiten selbst signierte Zertifikate oder lassen sie von Zertifizierungsstellen signieren, die dem Browser nicht bekannt sind. Diese Zertifikate müssen dann vom Benutzer extra bestätigt werden und werden als Ausnahme gespeichert. Chrome, Internet Explorer und Safari löschen diese Ausnahmen nicht nach Ende der Sitzung. Ein Angreifer kann also wiederum herausfinden, welche Internetseiten besucht wurden, für den Fall dass diese solch ein Zertifikat verwenden. Problematisch sind weiterhin SMB4 Anfragen beim Internet Explorer. Der Internet Explorer ermöglicht es beispielsweise Bilder von einem Rechner innerhalb des Windows Netzwerks einzubinden. Adressen haben dabei die Form \\Rechnername\Pfad\Dateiname“. Ein entfernter ” 4 SMB: Protokoll, dass verwendet wird, um auf Windows Netzwerkfreigaben zuzugreifen 9 Ein Überblick über verschiedene Schwachstellen des Privaten Modus bei . . . ITSEC@i1 2011 2-7 Angreifer kann also beispielsweise mit folgendem Code aber eventuell überhaupt nicht bewusst. Die Ausnahmen ein Bild auf der Internetseite einfügen: werden in der Datei permissions.sqlite“ gespeichert. ” • Ein weiteres Problem sind Aktionen, die mit herunter<img src="\\1.2.3.4\bild.jpg" alt="" /> geladenen Dateien durchgeführt werden. Wenn Firefox Dadurch versucht der Internet Explorer eine SMB Verauf einen unbekannten Dateityp trifft, dann fragt er bindung mit dem Server des Angreifers mit der beispielden Benutzer wie damit verfahren werden soll. Genauso haften Adresse 1.2.3.4 aufzubauen. Schlägt dann eine verhält es sich mit unbekannten Protokollen. Klickt der anonyme Verbindung fehl, so sendet der Internet Explorer Benutzer auf einen Link mit einem Protokoll, das Firefox im Rahmen der Autorisierung zahlreiche Daten wie den nicht bekannt ist, so wird der Benutzer gefragt wie damit Benutzernamen, den Namen der Windows Domäne und verfahren werden soll. Diese Antworten werden auch im den Computernamen. Diese sensiblen Informationen werPrivaten Modus dauerhaft gespeichert. Verwendet eine den auch im Privaten Modus gesendet. Weder ein Proxy Internetseite ein einzigartiges Protokoll, so kann dies ein Server, noch das Zurücksetzen der Browser Einstellungen Angreifer im Nachhinein herausfinden. schafft hierbei Abhilfe. Der entfernte Angreifer ist also in In der automatisierten Studie mit Hilfe der Modultests sind der Lage, den Benutzer zu identifizieren, zumindest kann es beim Fingerprint Verfahren helfen. In der Praxis wird weitere Schwachstellen gefunden worden: der Angriff jedoch dadurch erschwert, dass Provider den • Gespeicherte Zertifikate von Certificate Authorities (CA) SMB Port 445 sperren. Ist dies der Fall, so ist der Angriff werden bei Firefox in der Datei cert8.db“ dauerhaft ge” über das Internet nicht möglich. speichert. Dies geschieht immer dann, wenn der Benutzer eine Internetseite besucht, deren CA Firefox bisher nicht bekannt ist. Firefox geht die Kette von Zertifikaten durch C. Andere gefundene Schwachstellen und speichert die bisher unbekannten Zertifikate in der Auf der Suche nach Schwachstellen führten Aggarwal, Datei. Anhand dieser Daten kann ein lokaler Angreifer Bursztein, Jackson und Boneh [1] zwei systematische Studien Informationen über die besuchten Seiten ableiten. beim Firefox Webbrowser durch. • Das Änderungsdatum der SQLite Datenbanken wird ak• Die erste Sudie wurde mit Hilfe eines manuellen Code tualisiert. Die Dateigröße der Datenbank ändert sich Reviews durchgeführt. Dabei suchten sie im Quellcode jedoch nicht und es wurden auch keine Einträge gelöscht, gezielt nach Stellen, in denen auf persistenten Speimodifiziert oder hinzugefügt. Trotzdem kann der lokale cher geschrieben wird. Danach wurde geprüft, ob diese Angreifer damit feststellen, dass der Private Modus verSchreibvorgänge im Privaten Modus unterbunden werden. wendet wurde. Es genügt nachzusehen, ob die Dateigröße Dabei wurde im speziellen untersucht, welche Methoden gleich geblieben ist, sich aber das Änderungsdatum Dateien im Profilverzeichnis manipulieren und deren Ververändert hat. wendung untersucht. • Eine weitere Methode nimmt den Modultest zur Hilfe. Ein automatisiertes Werkzeug führt die Firefox ModulV. B ROWSER E RWEITERUNGEN tests im Privaten Modus des Browsers durch und sucht Erweiterungen (engl. addons) von Browsern stellen eine anschließend, ob Änderungen im Profilordner auf der Festplatte durchgeführt wurden. Dabei wurden einerseits weitere Gefahr dar. Sie können prinzipiell sämtliche SiSystem Calls5 überwacht, die das Dateisystem betreffen, cherheitsziele des Privaten Modus verletzen. Beispielsweise andererseits wurde das letzte Änderungsdatum der Datei- können Erweiterungen binären Programmcode ausführen und haben dabei dieselben Rechte wie der Benutzer. Eine Restriken verwendet. tion auf bestimmte Aktionen wie das Schreiben einer Datei ist Als Ergebnisse des manuellen Code Reviews wurden in keinem Browser enthalten. Somit liegt es alleine am Autor zusätzlich zu den oben bereits beschriebenen Problemen noch einer Erweiterung, ob diese die Sicherheitsziele des Privaten folgende gefunden: Modus einhält oder nicht. Oft macht sich der Entwickler über • Seiten-spezifische Einstellungen: Diese Einstellungen diese Problematik aber keine Gedanken und seine Erweitewerden in einer SQLite Datenbank gespeichert und bein- rung unterliegt keiner so exakten Prüfung wie der Browser halten Rechte, die für jede Internetseite getrennt ange- selbst. Die Browser unterscheiden außerdem meist zwischen wendet werden. Dabei wird beispielsweise festgehalten Erweiterungen und Plugins. Plugins sind beispielsweise Java, welche Seiten Cookies speichern, Erweiterungen instal- Flash oder Quicktime. Alle untersuchten Browser behandeln lieren, Bilder anzeigen, oder Popups anzeigen dürfen. außerdem Erweiterungen im Zusammenhang mit dem Privaten Teilweise befinden sich Prüfungen bezüglich des Privaten Modus unterschiedlich. Daher ein kurzer Überblick: Modus im Code, allerdings nicht immer. So wird das • Der Internet Explorer hat eine Option Symbolleisten und Hinzufügen von Ausnahmeregeln für den Popup Blocker ” Erweiterungen beim Start des InPrivate-Browsens deaktinicht unterbunden. Besucht der Benutzer eine Internetseivieren“, die in den Standardeinstellungen ausgewählt ist. te, die das Erlauben von Popups dringend benötigt und Erweiterungen sind dann im Privaten Modus deaktiviert. richtet deshalb eine Ausnahme ein, so hinterlässt er Trotzdem bleiben ActiveX Plugins weiterhin aktiviert, dem lokalen Angreifer Spuren. Dies ist dem Benutzer obwohl diese aus Sicherheitsgründen sowieso sehr be5 System Call: Anfrage an das Betriebssystem denklich sind. André Hanak 10 Ein Überblick über verschiedene Schwachstellen des Privaten Modus bei . . . ITSEC@i1 2011 2-8 • • • Bei Firefox funktionieren alle Erweiterungen und Plugins auch im Privaten Modus. Google Chrome deaktiviert im Inkognito Modus standardmäßig Erweiterungen. Allerdings bleiben Plugins und Plugins, die mit Erweiterungen kombiniert sind aktiv. Außerdem bietet Chrome dem Benutzer die Möglichkeit einzelne Erweiterungen in der privaten Sitzung über eine selbst erstellte Ausnahmeregel zu aktivieren. Safari unterstützt offiziell keine Erweiterungen. Bei der Verwendung von inoffiziellen APIs können Erweiterungen auch im Privaten Modus verwendet werden. A. Erweiterungen, die die Privatsphäre verletzen Um die Gefahr durch Erweiterungen besser beurteilen zu können wird im Folgenden erläutert, inwiefern bei den bekanntesten Erweiterungen Sicherheitsprobleme auftreten. Aggarwal, Bursztein, Jackson und Boneh [1, S. 11] haben dazu die Sicherheit der 40 populärsten Firefox Erweiterungen genauer untersucht. Acht davon enthielten nativen binären Code und wurden als generell unsicher eingestuft, da die Untersuchung von solchem Code sehr schwierig ist. Die übrigen 32 Erweiterungen basieren auf JavaScript und sind leicht zu untersuchen, da es nur zwei Methoden gibt auf das Dateisystem zuzugreifen. Verwendet wurde dabei eine modifizierte Firefox Version, die diese Dateisystemzugriffe heraus loggt. Als Ergebnis stellten die Autoren fest, dass 16 der 32 Javascript Erweiterungen unproblematisch sind. Einige davon schreiben nichts auf die Festplatte, andere nur Einstellungen. Wieder andere, wie zum Beispiel 1-Click YouTube Video ” Download“ schreiben nur Dateien auf die Festplatte, die der Benutzer herunterladen möchte. Nur eine Erweiterung ( Tab ” Mix Plus“) prüft, ob der Private Modus gerade verwendet wird und deaktiviert daraufhin eine Option zum Speichern der aktuellen Sitzung. Bei 16 Erweiterungen wurden Probleme festgestellt, die es einem Angreifer möglich machen können an Informationen aus der Privaten Sitzung zu gelangen. Dabei lassen sich die meisten Verstöße in drei Kategorien einteilen: • URL Whitelists (deutsch: Positivliste), Blacklists (deutsch: Negativliste) oder Warteschlangen: Viele Erweiterungen führen Listen mit URLs, für die Ausnahmen bei der Verarbeitung gemacht werden. Ein gutes Beispiel ist NoScript“, eine Erweiterung die ” das Ausführen von Scripts auf Internetseiten verbietet. Für Internetseiten, die aber beispielsweise JavaScript benötigen, können Ausnahmen hinzugefügt werden. Dabei werden URLs gespeichert auch wenn man sich gerade in einer privaten Sitzung befindet. Ein anderes Beispiel ist die Erweiterung DownThemAll“, sie ” ermöglicht es mehrere Dateien auf einmal von einer Internetseite herunterzuladen. Dabei wird die Liste der Dateien, die noch heruntergeladen werden müssen auf der Festplatte gespeichert, auch im Privaten Modus. • URL Zuordnungen: Einige Erweiterungen erlauben es auf bestimmten, vom Benutzer festgelegten Internetseiten, eine Sonderbehandlung durchzuführen. So ist es mit der Erweiterung Stylish“ beispielsweise möglich für ” André Hanak • jede Internetseite eine eigene Stylesheet (CSS) Datei zu verwenden. Diese Zuordnungen werden mit der URL zusammen auf der Festplatte gespeichert. Zeitstempel: Andere Erweiterungen speichern Datum und Uhrzeit von bestimmten Ereignissen ab. Beispielsweise wann eine bestimmte Funktion zuletzt verwendet wurde. Ein Angreifer kann so herausfinden, dass der Private Modus verwendet wurde, indem er den Zeitpunkt des letzten Eintrags in der Chronik des Browsers mit so einem Zeitstempel vergleicht. Ist der Zeitstempel neuer, so wurde der Private Modus offensichtlich verwendet. B. Lösungsmöglichkeiten Mit Ausnahme von Chrome bietet kein Browser die Möglichkeit, für jede Erweiterung einzeln festzulegen, ob diese im Privaten Modus verwendet werden soll. Dies ist jedoch die beste Lösung. Beim Blockieren aller Erweiterungen während der Privaten Sitzung werden viele Erweiterungen blockiert, die überhaupt kein Risiko darstellen. Außerdem werden unter Umständen auch Erweiterungen blockiert die die Privatsphäre des Benutzers erhöhen sollen. Damit verliert der Private Modus an Benutzerfreundlichkeit und eventuell sogar an Sicherheit. Werden alle Erweiterungen generell zugelassen, ergeben sich die oben beschriebenen Probleme. Folglich sollte zur Lösung des Problems eine Variante verwendet werden, die spezifisch für jedes Plugin funktioniert. Dabei gibt es drei vernünftige Lösungsansätze: • • • Manuelle Prüfung: Autoren von Erweiterungen können selbst entscheiden, ob ihre Erweiterung im Privaten Modus verwendet werden soll. Veränderungen verbieten: Erweiterungen werden grundsätzlich daran gehindert im Privaten Modus persistente Daten zu schreiben. Löschen der Änderungen: Alle bleibenden Änderungen werden nach Beendigung der privaten Sitzung wieder verworfen. Ausnahmen können gemacht werden, wenn die Erweiterung explizit anzeigt, dass die Änderung trotz des Privaten Modus erhalten bleiben soll. Aggarwal, Bursztein, Jackson und Boneh [1] haben eine Firefox Erweiterung namens ExtensionBlocker“ geschrieben. ” Diese Blockiert alle Erweiterungen in Firefox, die nicht ein bestimmtes Flag in ihrer Beschreibungsdatei ( install.rdf“) ” stehen haben. Das Flag ist einfach ein XML Tag, welches in der Datei hinzugefügt wird. Es sieht folgendermaßen aus: <privateModeCompatible/> Dies stellt eine praktische Lösung nach dem oben erst genannten Punkt dar. Diese Lösung macht aber erst dann Sinn, wenn entsprechende Erweiterungen dieses Flag auch setzen, da sonst alle Erweiterungen blockiert werden. Aus diesem Grund habe ich die 40 meist heruntergeladenen Firefox Erweiterungen untersucht. Dabei habe ich jeweils die Datei install.rdf“ aus den Dateien mit der Endung .xpi“ ausgepackt ” ” und danach nach der Zeichenfolge privateModeCompatible“ ” gesucht. Dabei bin ich zu dem Ergebnis gekommen, dass keine der untersuchten Erweiterungen dieses Flag verwendet. Die 11 Ein Überblick über verschiedene Schwachstellen des Privaten Modus bei . . . ITSEC@i1 2011 2-9 Gründe liegen vermutlich darin, dass die ExtensionBlock Erweiterung wenig bekannt ist. Eine Lösung des Problems wäre sicherlich, wenn das Firefox Entwicklerteam diese Funktionalität in den Firefox mit aufnehmen und für die Verwendung des Flags in Erweiterungen werben würden. VI. Z USAMMENFASSUNG Dieser Beitrag befasst sich mit der Frage, wie sicher der Private Modus in aktuellen Browsern tatsächlich ist. Dabei wurde zunächst einmal erläutert wie die vier bekanntesten Browser den privaten Modus implementieren, wie er beworben wird und es wurde eine Studie wurde vorgestellt, die zeigt, dass die Programmfunktion auf Erotikseiten vermehrt zum Einsatz kommt. Außerdem wird der Private Modus bei Firefox und Safari öfters verwendet als bei den anderen beiden Browsern. Anschließend wurde ein Sicherheitsmodell und Sicherheitsziele vorgestellt, dabei wurden zwei unterschiedliche Ziele definiert: Der Schutz vor einem lokalen Angreifer und der vor einem entfernten Angreifer. Es wurden manche Angriffsmethoden generell nicht betrachtet. Dies Betrifft die Analyse des Arbeitsspeichers oder Angriffe auf die Netzwerkinfrastruktur. Vor allem das Suchen von Spuren im Arbeitsspeicher könnte ein Thema späterer Forschungsarbeit sein. Es wurden zahlreiche Probleme festgestellt, die beispielsweise eng mit der Funktionsweise des Betriebssystems zu tun haben. Im Falle des entfernten Angreifers ist es kaum möglich die Sicherheitsziele vollständig umzusetzen. Allerdings gibt es für den Firefox Erweiterungen die mit dem Tor Netzwerk zusammenarbeiten und versuchen diese Ziele zu erreichen. Im Kapitel IV wurde dann untersucht inwiefern sich die Implementierungen der Browser im Detail unterscheiden. Dabei wurden Inkonsistenzen festgehalten, die das Ausspähen von Informationen ermöglichen. Außerdem wurden andere Sicherheitsprobleme vorgestellt, die bei Firefox gefunden wurden. Die Auswirkungen von Erweiterungen auf die Sicherheit wurde in Kapitel V vorgestellt. Eine Lösungsmöglichkeit, die Aggarwal, Bursztein, Jackson und Boneh [1] in Form der Browser Erweiterung ExtensionBlocker“ entwickelt haben, wurde auf ” Nutzen in der Praxis getestet. Dabei wurde festgestellt, dass heute kein Plugin mit der Lösung zusammenarbeitet. Die Idee ist sicherlich sehr gut, allerdings müsste die Funktion in Firefox selbst integriert werden, damit mehr Erweiterungen die Möglichkeit auch tatsächlich nutzen und entsprechende Flags verwenden. In diesem Themengebiet steckt noch viel Potenzial für zukünftige Untersuchungen. So wurde bereits erwähnt, dass hier viele Angriffsmethoden nicht weiter beschrieben wurden. Browser werden immer weiter entwickelt, manche Probleme werden behoben und wiederum neue entstehen. Des Weiteren wurde aufgrund der Quelloffenheit und seiner weiten Verbreitung vieles nur am Firefox untersucht. Nicht beachtet wurden weitere Browser wie beispielsweise Opera, die den Privaten Modus auch unterstützen. Zudem werden viele Browser für Mobile Endgeräte immer komplexer, für Android gibt es bereits Lösungen zum anonymen und privaten Surfen, wie Gauld [4] mit seiner Tor Anwendung zeigt. Zuletzt ist die Problematik mit Erweiterungen und Plugins noch immer nicht zufriedenstellend gelöst. André Hanak L ITERATUR [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] Gaurav Aggrawal, Elie Bursztein, Collin Jackson und Dan Boneh. “An analysis of private browsing modes in modern browsers”. In: Proc. of 19th Usenix Security Symposium. 2010. Peter Eckersley. “How Unique Is Your Web Browser?” In: Privacy Enhancing Technologies. 2010. Electronic Frontier Foundation. Panopticlick. [Online; aufgerufen am 28-November-2010]. URL: https:// panopticlick.eff.org. Connell Gauld. TorProxy and Shadow. [Online; aufgerufen am 28-November-2010]. 2009. URL: http://www. cl.cam.ac.uk/research/dtg/android/tor/. Google. Incognito mode (private browsing). [Online; aufgerufen am 28-November-2010]. URL: http://www. google . com / support / chrome / bin / answer. py ? hl = en & answer=95464. Microsoft. Internet Explorer 8: Funktionen. [Online; aufgerufen am 28-November-2010]. URL: http://www. microsoft . com / germany / windows / internet - explorer / features/overview.aspx. Mozilla. Mozilla Firefox 3.5 Release Notes. [Online; aufgerufen am 28-November-2010]. URL: http://www. mozilla.com/en-US/firefox/3.5/releasenotes/. Mozilla. Private Browsing. [Online; aufgerufen am 28November-2010]. URL: http://support.mozilla.com/enUS/kb/Private+Browsing. Mike Perry. Torbutton. [Online; aufgerufen am 28November-2010]. URL: https : / / www. torproject . org / torbutton/. Wikipedia. Usage share of web browsers — Wikipedia, The Free Encyclopedia. [Online; aufgerufen am 28November-2010]. 2010. URL: http://en.wikipedia.org/ w / index . php ? title = Usage share of web browsers & oldid=399157597. 12 Verified by Visa und MasterCard SecureCode, oder: Wie man die . . . ITSEC@i1 2011 Verified by Visa und MasterCard SecureCode, oder: Wie man die Authentifizierung nicht entwerfen sollte 1 Verified by Visa und MasterCard SecureCode, oder: Wie man die Authentifizierung nicht entwerfen sollte Sergiy Protsenko Universität Erlangen-Nürnberg Abstract. Immer mehr Banken führen weltweit das neue System für die Authentifizierung von Online-Transaktionen ein, das auf dem „3-D Secure - Protokoll“ basiert und unter den Namen „Verified by Visa“ und „MasterCard SecureCode“ präsentiert wird. Ein Grund dafür war der rasche Anstieg der Zahl von Online-Betrugsfällen, der mit der Einführung von „Chip&PIN“Authentifizierung für Offline-Transaktionen verbunden war. Das „3-D Secure - Protokoll“ wurde keiner wissenschaftlichen Überprüfung unterzogen und kann ein Musterbeispiel dafür sein, wie man die Authentifizierung nicht entwerfen sollte. Es hat erhebliche Schwachstellen, einige davon werden schon ausgenutzt. Es wird eine Verbesserung des Protokolls angeboten, die technologisch einwandfrei ist und sich nicht nur für Banken, sondern auch für Händler und Kunden lohnt. 1. EINFÜHRUNG D IE sogenannten CNP - Transaktionen („card not present“) erfolgen über das Internet, Telefon oder Post, wo der Standort des Händlers (Verkaufsort) und der Standort des Karteninhabers und der Karte nicht übereinstimmen. Der Käufer wird weder durch die Eingabe einer PIN noch durch eine Unterschrift authentifiziert. Betrügerische Transaktionen dieser Art machen derzeit einen großen Teil von Betrugsschäden der Banken aus. Dieser schnelle Anstieg wurde durch die Einführung von EMV-Kreditkarten mit Chip herbeigeführt. EMV steht für Europay, MasterCard und Visa, der Standard wird in englischsprachigen Ländern auch als „Chip & Pin“ bezeichnet. Im Vereinigten Königreich von Großbritannien und Nordirland wurde die Einführung dieses Standards gegen Ende 2005 abgeschlossen. Viele europäische Länder haben schon sowohl die Zahlungskarten als auch die Terminals auf die neue Technologie umgerüstet. In Deutschland haben über 60% aller Zahlungskarten einen EMV-Chip, bis Ende 2010 sollen alle vorhandenen Kreditkarten ohne Chip umgetauscht werden. Die Zahl von Betrügen mit verlorengegangenen und gestohlenen Kreditkarten ging eine Zeit lang zurück. Auch die Fälschung Dieser Beitrag entstand im Rahmen des Konferenzseminars "ITSicherheit", das im Wintersemester 2010/11 an der Universität ErlangenNürnberg durchgeführt wurde. Es wurde organisiert vom Lehrstuhl für ITSicherheitsinfrastrukturen (Prof. Dr. F. Freiling). Sergiy Protsenko der Karten mit Chip ist erheblich schwerer. Immerhin können die Betrüger die mit dem Chip ausgestatteten Karten im Ausland weiterhin benutzen, wo die Chips noch nicht unterstützt werden (durch Abwärtskompatibilität mit Magnetstreifen). Gleichzeitig stieg die Zahl von betrügerischen Card Not Present - Transaktionen drastisch. Um den akuten Anstieg der Betrugsfälle zu bewältigen, wurde das Protokoll 3-D Secure (3DS) entwickelt. Es wird unter den Namen „Verified by Visa“ und „MasterCard SecureCode“ vermarktet. In der Urform des Protokolls sah der Autorisierungsablauf folgendermaßen aus: bei einem Kauf im Internet sollte ein Pop-up-Fenster mit dem Formular zur Kennworteingabe erscheinen (Abb. 2). Wenn der Käufer das richtige Kennwort eingeben würde, würde er zur Händlerseite zurückgeführt, um den Kauf abzuschließen. Es gab jedoch Schwierigkeiten mit Pop-up-Blockern, daher wurde empfohlen, statt Pop-up-Fenstern Inline-Frames zu benutzen. Der Händler schickt die Kartennummer an Visa oder MasterCard und bekommt eine URL für Inline-Frame, welches dann in die Seite, die den Kunden angezeigt wird, eingebettet wird. Wenn das Protokoll erfolgreich abläuft, bekommt der Händler einen Autorisierungscode, den er an die Bank weiterleitet. 2. 3-DOMAIN SECURE (3-D SECURE™): BESCHREIBUNG DER FUNKTIONSWEISE 2.1. GRUNDLEGENDE BEGRIFFE Das 3DS-Protokoll wird für die Zahlungsservices „Verified by Visa“ und „MasterCard SecureCode“ eingesetzt, mit dem Ziel, die Sicherheit beim Online-Einkauf durch zusätzliche Autorisierung der Transaktionen zu erhöhen. Es basiert auf dem Modell der drei Domänen (Abb. 1): - „Issuer Domain“ (die kartenausgebende Bank). Der Issuer ist für die Anmeldung und Authentifizierung seiner Kunden (Karteninhaber) verantwortlich. Die Karteninhaber werden auch der Issuer-Domäne zugeordnet. - „Acquirer Domain“. Unter Acquirer versteht man das Kreditinstitut, das die Kreditkartenzahlungen für den Händler abwickelt (die Händler sind Kunden des Acquirers). Zu dieser Domäne gehören auch die Händler selbst. 13 Verified by Visa und MasterCard SecureCode, oder: Wie man die . . . ITSEC@i1 2011 Verified by Visa und MasterCard SecureCode, oder: Wie man die Authentifizierung nicht entwerfen sollte - „Interoperability Domain“ (vertreten durch Visa oder MasterCard). Sie ermöglicht den Nachrichtenaustausch zwischen zwei anderen Domänen mit einem gemeinsamen Protokoll. Issuer Domain Interoperability Domain Acquirer Domain CARDHOLDER MERCHANT Shopping and authentication messages Issuer authenticates Cardholder using Issuer specified method ISSUER Authorization and payment processing Authorization and payment messages ACQUIRER 2 sern. Dies hat aber keinen Sicherheitsvorteil und verhindert einen Man-in-the-middle-Angriff nicht, wenn die Malware sich bereits auf dem Computer des Benutzers befindet. 4) Die Kundendaten werden für die spätere Benutzung beim Zugriffskontrollserver des Issuers (ACS – Access Control Server) gespeichert. Der Karteninhaber wird über das Ergebnis seiner Anmeldung informiert und kann einkaufen, sobald die Anmeldung erfolgreich abgeschlossen ist. Damit die Kunden, die sich vorher nicht für 3DS angemeldet haben, trotzdem sofort bei teilnehmenden Händlern einkaufen können, ist bei einigen Banken auch eine Aktivierung während des Einkaufs („activation during shopping“) erlaubt. Die Nachteile dieser Lösung werden im Abschnitt 3.2 beschrieben. Abbildung 1. Die drei Domänen [5]: • Authentifizierungsanfrage und ihr Ergebnis: Nachrichtenaustausch zwischen der Acquirer- und der Issuer-Domäne innerhalb der Interoperability-Domäne über das Internet. • Authentifizierung des Benutzers: Nachrichtenaustausch zwischen dem Karteninhaber und dem Issuer innerhalb der Issuer-Domäne. • Autorisierungsanfrage und Zahlungsabwicklung: Nachrichtenaustausch zwischen dem Händler und dem Acquirer innerhalb der Acquirer-Domäne. • Autorisierung und Zahlungsabwicklung: Nachrichtenaustausch zwischen dem Accquirer und dem Issuer innerhalb der InteroperabilityDomäne über VisaNet. 2.2. ANMELDUNG Der Kunde, der bei teilnehmenden Händlern mit seiner Kreditkarte einkaufen möchte, muss sich vorher für 3DS bei seiner Bank anmelden. Dabei ist anzumerken, dass es bei einigen Banken möglich ist, die Anmeldung (und somit die Benutzung von 3DS) z. B. für die ersten drei Einkäufe zu überspringen. Der Anmeldeprozess sieht folgendermaßen aus: 1) Der Karteninhaber besucht die Anmeldeseite des Issuers. 2) Der Karteninhaber gibt seine Daten ein: die Kartennummer, das Ablaufdatum und möglicherweise andere Daten, die vom Issuer angefordert werden (Abb. 2). Danach werden ein Passwort und eine persönliche Begrüßung vereinbart. Die persönliche Begrüßung ermöglicht die beidseitige Authentifizierung. Wenn die Begrüßung richtig angezeigt wird, soll der Käufer annehmen, dass die Passwortabfrage wirklich von seiner Bank kommt. Natürlich muss die persönliche Begrüßung so gewählt werden, dass sie von einem möglichen Angreifer nicht leicht erraten werden kann. 3) Der Issuer überprüft die eingegebenen Daten um festzustellen, dass es sich wirklich um den rechtmäßigen Karteninhaber handelt. Die Art der Verifizierung des Karteninhabers ist aber nicht auf die Abfrage von irgendwelchen Merkmalen begrenzt, sondern kann von jeder Bank frei gewählt werden. So sind z. B. Einmalpasswörter denkbar, die per Post oder SMS verschickt werden, oder auch Hardwarelösungen wie die Verwendung von Kartenle- Sergiy Protsenko Abbildung 2. Anmeldung für MasterCard SecureCode. 2.3. AUTHENTIFIZIERUNG: ABLAUF DER ZAHLUNGSABWICKLUNG Um an 3D-Secure teilzunehmen, muss der Händler ein so genanntes Merchant Server Plug-in (MPI) installieren. Alternativ kann die Zahlungsabwicklung durch den Acquirer oder einen Drittdienstleister erfolgen, der sich dann um den Einsatz von 3D-Secure kümmert. Der Ablauf des Einkaufs bei einem teilnehmenden Händler kann grob in vier Schritte unterteilt werden (hier wird als Beispiel „Verified by Visa“ betrachtet [5]): 1) Abschluss des Einkaufs. Nachdem der Kunde mit dem Einkauf fertig ist, gibt er seine Kreditkartendaten ein. Dann wird die MPI-Software aktiviert. 14 Verified by Visa und MasterCard SecureCode, oder: Wie man die . . . ITSEC@i1 2011 Verified by Visa und MasterCard SecureCode, oder: Wie man die Authentifizierung nicht entwerfen sollte 2) Anfrage an den Visa Directory Server. Das MPI schickt eine Anfrage an den Visa Directory Server, um zu ermitteln, ob die kartenausgebende Bank 3DS unterstützt und ob der Karteninhaber sich bereits für 3DS angemeldet hat. Wenn das der Fall ist, erhält das MPI eine URL von dem entsprechenden Zugriffskontrollserver der kartenausgebenden Bank. Die Passwortabfrage wird dann als Pop-up-Fenster angezeigt oder als Inline-Frame eingebettet. Wenn 3DS für die angegebene Kartennummer nicht verfügbar ist, erfolgt die herkömmliche Abwicklung durch den Händler oder seinen Dienstleister. 3) Authentifizierung des Karteninhabers. Das MPI schickt über den Browser des Karteninhabers eine Authentifizierungsanfrage (PAReq – Payers Authentication Request) an den Zugriffskontrollserver. Diese Anfrage erhält auch Informationen bezüglich der konkreten Transaktion (Händler, Betrag, Datum). Die Authentifizierung erfolgt meistens durch eine Passwortabfrage (Abb. 3), es können aber auch andere Methoden (z. B. Chipkarten) verwendet werden. Der Zugriffskontrollserver überprüft die Richtigkeit des Passworts und schickt das Ergebnis (PARes – Payers Authentication Response) wieder über den Browser des Käufers an das MPI. 4) Zahlungsabwicklung. Wenn die Authentifizierung erfolgreich war, erhält der Händler die PARes-Nachricht als eine digital signierte Genehmigung der Transaktion. Diese wird an den Acquirer weitergeleitet. Zusammenfassend kann man sagen, dass die 3DS-Abfrage eine Art von Transaktionsauthentifizierung ist. 3 Diese Ausführungen treffen aber nicht zu. Das Ziel des Protokolls ist nicht die Authentifizierung des Benutzers gegenüber dem Händler mit Hilfe des Zugriffskontrollservers der Bank, sondern die Autorisierung der konkreten Transaktion. Steven J. Murdoch nimmt auch irrtümlich an [11], dass der Käufer keine Beschreibung der Transaktion bei der Passwortabfrage erhält, somit sei das Protokoll gegen Man-in-the-middleAngriffe ungeschützt. Genau das Gegenteil ist aber der Fall, wie die Bespiele von Visa und MasterCard zeigen (Abb. 3) [12,13]. Abbildung 3. Verified by Visa Passwortabfrage. 3. SICHERHEITSSCHWACHSTELLEN 2.4. IST 3DS EIN SINGLE SIGN-ON SYSTEM? Die unpassende Verwendung des Begriffs „Single Sign-on“ war einer der wichtigsten Kritikpunkte zum Artikel von Steven J. Murdoch und Ross Anderson [10,11]. Single Sign-on („Einmalanmeldung“) bedeutet, dass der Benutzer seine Zugangsdaten nur einmal eingeben muss, um auf verschiedene (aber verwandte) Dienste zugreifen zu können. Es ist wichtig, dass der Benutzer sich wirklich nur ein einziges Mal authentifiziert, Systeme, die wiederholte Authentifizierungen mit gleichen Zugangsdaten erfordern, zählen nicht zu Single Sign-on. Das kann man sich auch so vorstellen, dass der Authentifizierungsserver sich im Namen des Benutzers bei weiteren teilnehmenden Diensten anmeldet. Steven J. Murdoch bezeichnet 3D-Secure trotz mehrerer Hinweise weiterhin als Single Sign-on System [11]. Er begründet diese Aussage mit folgenden Ausführungen: Obwohl 3DS nicht als Single Sign-on entworfen wurde, erfülle es die entscheidende Voraussetzung, dass ein Beteiligter einen anderen authentifizieren kann, ohne dass dieser vorher Zugangsdaten vereinbaren oder Schlüssel austauschen muss. Wie bei anderen Single Sign-on Systemen, gebe es einen Vermittler, der die Authentifizierung durchführt und das Vertrauen der Kommunikationspartner genießt. Die Kartennummer sei ein Pseudonym, das Protokoll soll dem Händler zusichern, dass der Kunde der berechtigte Inhaber der Karte ist. Sergiy Protsenko Das Protokoll spezifiziert die sichere (verschlüsselte und signierte) Nachrichtenübertragung zwischen Händler, Acquirer, Issuer und der Kreditkartenorganisation (VISA oder MasterCard). Die Art der Authentifizierung der Karteninhaber (sowohl bei der Anmeldung als auch bei der Zahlungsabwicklung) gehört jedoch nicht zum Protokoll und wird von den kartenausgebenden Banken selbst gewählt. Die Benutzung von 3DS wird durch Vertragsbedingungen bezüglich Haftung gefördert, da die Händler, die 3DS einsetzen, reduzierte oder gar keine Haftung bei umstrittenen Transaktionen haben. Kurzfristig kann das Verfahren die Betrugsquoten beim Online-Handel reduzieren. Allerdings verletzen viele 3DSImplementierungen bestehende Sicherheitsregeln. 3.1. VERWIRRUNG DES BENUTZERS – VERBERGUNG VON SICHERHEITSHINWEISEN Den Verbrauchern wird immer wieder geraten, zur Vermeidung von Phishing-Angriffen ihre Bankpasswörter nur auf TLS-geschützten Webseiten einzugeben. Darüber hinaus sollten sie auch die Richtigkeit der Domain-Namen der Seite überprüfen. Moderne Browser unterstützen den Benutzer durch Anwendung von so genannten Extended- ValidationZertifikaten. Dabei wird z. B. die Farbe der Adressleiste bei aktiver TLS-Verbindung geändert sowie der Besitzer des Domain-Namens angezeigt. Die Eingabemaske von 3DS ist ein 15 Verified by Visa und MasterCard SecureCode, oder: Wie man die . . . ITSEC@i1 2011 Verified by Visa und MasterCard SecureCode, oder: Wie man die Authentifizierung nicht entwerfen sollte Inline-Frame oder ein Pop-up-Fenster ohne Adressleiste, daher ist es für Benutzer unter Umständen schwierig zu überprüfen, wer nach dem Passwort fragt (es hängt unter anderem davon ab, welcher Browser verwendet wird). Da viele Banken die Umsetzung von 3DS an Drittdienstleister übergeben, kann man auch bei sichtbarer URL nicht auf Anhieb erkennen, woher die Seite stammt, da die URL weder der Bank noch dem Händler gehört. Dies macht die Angriffe gegen 3DS einfacher, außerdem ruiniert es Anti-Phishing-Maßnahmen, indem es gängigen Sicherheitshinweisen widerspricht. 3.2. AKTIVIERUNG WÄHREND DES EINKAUFS Bevor 3DS zur Authentifizierung von Transaktionen benutzt werden kann, soll der Karteninhaber ein Passwort mit seiner Bank vereinbaren. Eine einigermaßen sichere Methode dafür wäre, das Passwort per Post an die angemeldete Adresse zu schicken. Um die Kosten zu sparen, bieten viele Banken die Möglichkeit, die Anmeldung beim ersten Einkauf mit der 3DSfähigen Karte durchzuführen. Dieses Verfahren wird als „activation during shopping“ (ADS) bezeichnet. Um sicherzustellen, dass der Kunde der berechtigte Kartenbesitzer ist, können einige schwache Authentifizierungsmerkmale abgefragt werden (z. B. das Geburtsdatum). Einige Banken verzichten sogar darauf, andere verlangen eine Authentifizierung per Telefon (z. B. Advanzia Bank S.A.) oder verschicken ein Startpasswort für 3DS zusammen mit der Geheimzahl für die Kreditkarte (Commerzbank AG). Aus der Sicht des Käufers fragt ein Online-Geschäft nach persönlichen Daten. Diese Vorgehensweise wird oft durch Betrüger missbraucht, die Phishing-Seiten machen das ADS-Formular nach. Es steht aber jedem Kunden frei, sich im Voraus auf der Webseite seiner Bank für 3DS anzumelden. 3.3. EINVERSTÄNDNISERKLÄRUNG UND WAHL DES PASSWORTS Wenn der Kunde sich für 3DS anmeldet (d. h. ein 3DSPasswort festlegt), gilt es als Einverständnis mit den neuen AGB. Es ist aber naheliegend, dass ADS keine gute Weise ist, eine Einverständniserklärung des Kunden zu erhalten. Denn wenn die AGB angezeigt werden, möchte der Käufer in erster Linie seinen Einkauf tätigen, er wird daher die Vertragsklauseln nicht besonders aufmerksam durchlesen, wenn überhaupt. Auch die Wahl des Passworts ist eine nebensächliche Aufgabe. Es wird daher wahrscheinlich ein schwaches Passwort gewählt, oder ein Passwort, das noch woanders genutzt wird. Nach Anforderungen von Visa können die Käufer bis zu drei Mal ohne 3DS bezahlen. Die Banken können aber den Benutzer zur Anmeldung zwingen, indem sie den Kauf ohne 3DS sperren. So hat z. B. die Advanzia Bank S.A. einen Kauf mit der MasterCard ohne 3DS-Anmeldung zugelassen, die NatWest Bank in Großbritannien ließ keinen einzigen Einkauf ohne das Aktivieren von 3DS zu [1]. Sergiy Protsenko 4 3.4. HAFTUNGSUMKEHR Da nur wenige Kunden den allgemeinen Geschäftsbedingungen (AGBs) widersprechen, bleibt es den Banken überlassen, die Haftung auf Kunden zu übertragen. Z. B. besagen die Nutzungsbedingungen der Royal Bank of Scotland besagen [2]: „You understand that you are financially responsible for all uses of RBS Secure.“ In den AGB für MasterCard SecureCode der Advanzia Bank S.A. steht [4]: „Sie tragen die alleinige Verantwortung für die Wahrung der Vertraulichkeit Ihres SecureCodes, Ihrer Registrierungsdaten oder anderer Überprüfungsinformationen, die von Ihnen in Verbindung mit MasterCard SecureCode erstellt wurden. Zudem tragen Sie die alleinige Verantwortung für alle Aktivitäten, im Rahmen derer Sie Ihr Kennwort, Ihre Registrierungsdaten oder andere Überprüfungsdaten nutzen, die Ihnen in Verbindung mit MasterCard SecureCode zur Verfügung gestellt oder von Ihnen erstellt wurden.“ Obwohl die Bank für die ungünstige Wahl der Sicherheitsmaßnahmen verantwortlich ist, können einige Banken versuchen, die Verluste auf den Kunden zu abzuwälzen. Die genaue Gesetzlage ist allerdings noch unklar. So heißt es z. B. im Infoblatt zu 3DS von PayOne [7], das Kennwort sei nur dem Kunden bekannt, dadurch würde über 3DS gewährleistet, dass es sich bei dem Bezahlenden tatsächlich um den rechtmäßigen Karteninhaber handelt. Die Haftung für Rückbelastungen, bei denen der Karteninhaber die Nutzung der Karte bestreitet, liege aber bei der kartenausgebenden Bank. Obwohl 3D-Secure schon seit einigen Jahren verfügbar ist, wird es in Deutschland noch nicht flächendeckend eingesetzt. Es gibt aktuell leider keine Gerichtsurteile, die sich mit der Haftung bei bestrittenen Kreditkartenzahlungen mittels 3DSecure befassen. Wenn die Zahlung im Internet nur mit der Kartennummer und Kartenprüfnummer (auf der Rückseite der Karte) erfolgte, liege die Beweislast bei der Bank, besagt ein Urteil des Amtsgerichts München [14]. Im beschriebenen Fall hat die Bank zweimal den Schaden übernommen, wollte aber den dritten zu Unrecht abgebuchten Betrag nicht komplett erstatten. Es ist auch offensichtlich, dass es praktisch unmöglich ist, das Verschulden des Kunden für einen sorglosen Umgang mit der Kreditkarte zu beweisen. Ganz anders sieht es aus, wenn die Abbuchungen von einer gestohlenen oder verloren gegangenen EC-Karte am Geldautomat mit der richtigen Geheimzahl erfolgten. Dann kann sich die Bank auf einen so genannten Anscheinsbeweis berufen. Das bedeutet, dass die allgemeine Lebenserfahrung für einen bestimmten Ablauf von Ereignissen spricht. Wenn zum Beispiel das Geld kurze Zeit nach dem Diebstahl mit der Karte und der richtigen Geheimzahl abgebucht wird, kann der Anscheinsbeweis dafür sprechen, dass die Geheimzahl auf der Karte notiert war oder mit ihr zusammen aufbewahrt wurde, so hat der Bundesgerichtshof am 05.10.2004 entschieden [15]. Die Sicherheitsexperten, deren Gutachten von dem Gericht eingeholt wurde, waren der Meinung, dass es praktisch unmöglich ist, die Geheimzahl aus den auf der EC-Karte vorhandenen Daten zu errechnen. Der Kunde kann aber einen An- 16 Verified by Visa und MasterCard SecureCode, oder: Wie man die . . . ITSEC@i1 2011 Verified by Visa und MasterCard SecureCode, oder: Wie man die Authentifizierung nicht entwerfen sollte scheinsbeweis für grobe Fahrlässigkeit entkräften, wenn ein Ausspähen der Geheimzahl durch einen Dritten bei der Geldabhebung kurz vor dem Diebstahl möglich erscheint. Es ist schwer zu beurteilen, ob 3D-Secure vor dem Gericht als sicher betrachtet wird und ob dieses Verfahren den Anforderungen an einen Anscheinsbeweis genügen kann. 3.5. BEIDSEITIGE AUTHENTIFIZIERUNG Durch Anzeige einer persönlichen Begrüßung, die bei der Anmeldung zu 3DS festgelegt wird, kann der Kunde überprüfen, ob er tatsächlich mit seiner Bank kommuniziert. Murdoch und Anderson [1] sind überzeugt, dass die persönliche Begrüßung nicht sicher genug ist. Erstens, wenn es um ADS geht, würden die Kunden eher eine schlechte Begrüßung wählen, da ihr Ziel der Einkauf und nicht Sicherheit ist. Außerdem sei die persönliche Begrüßung für Man-in-the-middle-Angriffe anfällig. So ein Angriff kann auf von Malware befallenen Computer des Käufers stattfinden [9]. 5 liche Anmeldung und möglicherweise fehlerhafte Darstellung von Inline-Frames und Pop-up-Fenstern schreckt potenzielle Käufer ab. Aus meiner Sicht sind die Grundidee und die Sicherheit bei dem 3DS durchaus akzeptabel. Es ist auf jeden Fall sicherer als eine Übermittlung von Kreditkartendaten ohne Authentifizierung. Das Problem liegt darin, dass das Protokoll viele wichtige Abläufe nicht spezifiziert. Die Banken wählen dann unpassende Varianten, die den Mindestanforderungen nicht gerecht werden. Somit diskreditieren fehlerhafte Implementierungen das ganze System. Die Authentifizierung von Benutzern, die eigentlich nicht zum 3DS-Standard gehört und vom Issuer gewählt wird, ist auch eine wesentliche Schwachstelle. Hier wäre eine Verbesserung durch Versand von Einmalpasswörtern per SMS denkbar. Steven J. Murdoch und Ross Anderson [1] glauben, dass auf lange Sicht ein vertrauenswürdiges kostengünstiges Gerät mit USB-Schnittstelle die beste Lösung ist. Auf jeden Fall soll das System ein sicheres Protokoll und eine entsprechende Rechtsgrundlage für die Haftung so vereinigen, dass vor allem die Kunden davon profitieren können. 3.6. UNEINHEITLICHE AUTHENTIFIZIERUNGSMETHODEN Die Spezifikation von 3DS definiert, wie die Kommunikation zwischen Händler, Issuer und Acquirer ablaufen soll, sowie das Zahlungsschema. Dazu gibt es drei Parameter, die die Banken selbst festlegen. Erstens, wie erfolgt die Identifikation des Kunden? Einige Banken haben eine sehr ungünstige Wahl getroffen, wie z. B. durch eine Geheimzahl für den Geldautomaten. Zweitens, wie wird das Passwort neu gesetzt, wenn der Kunde es vergisst? Hier wird auch am falschen Ende gespart. Einige Banken bieten nach zwei falschen Eingaben an, das Passwort in gleicher Weise wie bei ADS neu zu setzen. In mehreren Fällen fragen die Banken nur das Geburtsdatum ab, wobei solche Informationen durchaus aus öffentlich zugänglichen Quellen gewonnen werden können. Drittens, wird das ganze Passwort oder eine Teilmenge der Zeichen abgefragt? Es kann sinnvoll sein, nur bestimmte Zeichen abzufragen, um ein Abhören des Passworts durch Tastatur-Logger zu erschweren. Allerdings kann dies den Benutzer dazu zwingen, ein einfaches Passwort zu wählen oder es aufzuschreiben, was gegen die AGB verstößt. LITERATURVERZEICHNIS [1] [2] https://www.rbssecure.co.uk/rbs/tdsecure/terms_of_use.j sp, abgerufen am 08.11.2010. [3] 3DS ist vorteilhaft für Händler, da sie durch die Haftungsumkehr Verluste reduzieren, sowie für Banken, die die Haftung für Kartenmissbrauch auf den Kunden abwälzen. Im Gegenzug bekommen die Kunden nur eine geringfügige Verbesserung der Sicherheit und haften möglicherweise für Missbrauchsschaden. Denn im Schadensfall müssen sie eventuell nachweisen, dass sie das Passwort z. B. nicht grob fahrlässig aufbewahrt haben. Außerdem werden sie für unsicheres Verhalten im Internet „geschult“. Aber auch Händler profitieren von der Einführung von 3DS nicht immer, denn die zusätz- Sergiy Protsenko Advanzia Bank S.A. MasterCard SecureCode: Häufig gestellte Fragen. https://enrollment.securecode.com/vpas/advanzia/enroll/ faq.jsp?locale=de_DE&bankid=121, abgerufen am 08.11.2010. [4] Advanzia Bank S.A. MasterCard Secure Code AGB. https://enrollment.securecode.com/vpas/advanzia/enroll/ tandc.jsp?locale=de_DE&bankid=121, abgerufen am 08.11.2010. [5] VISA International Service Association. 3-D Secure system overview. https://partnernetwork.visa.com/vpn/global/retrieve_doc ument.do?documentRetriedalId=119, abgerufen am 08.11.2010. [6] [7] Internet Retailer. Verified by Visa security program used as bait in phishing scams, 06.01.2005. http://www.internetretailer.com/ dailyNews.asp?id=13764, abgerufen am 23.11.2010. Payone Payment Services. Infoblatt 3D-Secure. http://www.payone.de/data/download/download.html?filena me=Infoblatt_3D-Secure.pdf, abgerufen am 23.11.2010. [8] Kartensicherheit.de. Authentifizierung 3D Secure. http://www.kartensicherheit.de/ww/de/pub/oeffentlich/in fos_fuer_haendler/3d_secure.php, abgerufen am 23.11.2010. [9] 4. WIE KANN MAN DAS SYSTEM VERBESSERN? Steven J. Murdoch, Ross Anderson. Verified by Visa and MasterCard SecureCode: or, How Not to Design Authentication. Financial Cryptography and Data Security ’10, 25-28 January 2010, Tenerife. Royal Bank of Scotland. RBS Secure Terms of Use, Financial hackers attacking Visa/MasterCard users with fake 3-D Secure logins. Infosecurity Magazine, 15.07.2010. http://www.infosecurity-magazine.com/view/10992/ financial-hackers-attacking-visamastercard-users-with-fake3d-secure-logins, abgerufen am 26.11.2010. [10] Ross Anderson. How online card security fails. Blogeintrag vom 26.01.2010. http://www.lightbluetouchpaper.org/2010/01/ 26/how-online-card-security-fails/, abgerufen am 26.11.2010. [11] Steven J. Murdoch. Why is 3-D Secure a single sign-on system? Blogeintrag vom 29.01.2010. http://www.lightbluetouchpaper.org/ 2010/01/29/why-is-3-d-secure-a-single-sign-on-system/, abgerufen am 26.11.2010. [12] Visa Europe Services Inc. Online Einkaufen mit Verified by Visa (Demo). http://www.visa.de/de/sicher_mit_visa/sicher_online_mit _verified_by/so_funktioniert_es/demo3.aspx?popup=true, abgerufen am 06.01.2011. 17 Verified by Visa und MasterCard SecureCode, oder: Wie man die . . . ITSEC@i1 2011 Verified by Visa und MasterCard SecureCode, oder: Wie man die Authentifizierung nicht entwerfen sollte 6 [13] MasterCard Europe. So funktioniert MasterCard SecureCode (Demo). http://www.mastercard.com/de/personal/de/privatkunden/ wissenswertes/securecode_anim/show.html, abgerufen am 06.01.2011. [14] Amtsgericht München. Urteil vom 16.02.2009, AZ. 242 C 28708/08. http://www.money-advice.net/view.php?id=43781, abgerufen am 06.01.2011. [15] Bundesgerichtshof, Urteil vom 05.10.2004, AZ. XI ZR 210/03. www.eurolawyer.at/pdf/BGH_XI_ZR_210-03.pdf, abgerufen am 07.01.2011. Sergiy Protsenko 18 (Un-)sicherheit in komplexen Systemen ITSEC@i1 2011 X-1 (Un-)sicherheit in komplexen Systemen Kilian Redel Friedrich-Alexander-Universität Erlangen-Nürnberg Zusammenfassung—Heute vertraut der Mensch sein Leben einer Vielzahl komplexer technischer Systeme an, deren Komplexität nicht mehr erfasst werden kann. Zwar gibt es Redundanzen und andere Maßnahmen mit denen eine sehr hohe Ausfallsicherheit des Systems ermöglicht wird, jedoch ist es niemals möglich alle Wechselwirkungen aller Teilsysteme zu erkennen und zu beherrschen. So passieren immer wieder Unfälle bzw. Katastrophen, die eigentlich nicht passieren können, weil mehrere scheinbar voneinander unabhängige Teilsysteme ausfallen, von denen jedes einzelne für sich genommen keinerlei Risiko darstellt. Im Paper sollen anhand vergangener Unfälle das oben genannte veranschaulicht werden. Außerdem soll auf die Möglichkeiten zur Steigerung der Sicherheit durch moderne Steuerungen, aber auch deren Risiken eingegangen werden. I. E INF ÜHRUNG Grundlage dieser Arbeit ist das Buch Normal Accidents:Living with High-Risk Technologies von Charles Perrow, welches erstmals im Jahr 1984 erschien, also einige Zeit bevor das Thema IT-Sicherheit aktuell wurde. Viele seiner Analysen in Bezug auf komplexe Systeme treffen jedoch auch oder im Besonderen auf IT-Systeme zu. Geschichte fertig sind teilt er Ihnen mit, dass am vergangenen Wochenende die Lichtmaschine kaputt gegangen ist und erst heute repariert werden kann. Nun bliebe ja immer noch der Bus. Allerdings hat der freundliche alte Herr bereits im Radio gehört, dass die Busgesellschaften mit der Aussperrung ernst gemacht hat. Die Fahrer hatten sich geweigert weiterhin mit ihrer Meinung nach nicht verkehrstüchtigen Bussen zu fahren. Außerdem fordern sie mehr Lohn. Somit ist das nächste System ausgefallen. Auch der Versuch ein Taxi zu rufen scheitert, da aufgrund der Aussperrung alle Taxen belegt sind. Schlussendlich rufen Sie den Sekretär der Personalleiterin an, bitten um einen neuen Termin und erzählen ihm, dass bei Ihnen heute alles schiefgelaufen ist. Der Sekretär gibt sich am Telefon verständnisvoll, hält Sie jedoch im Stillen für unzuverlässig, da Sie sich zuerst so um das Vorstellungsgespräch bemühen und dann nicht erscheinen. Er vermerkt dies in Ihrer Akte und versucht einen möglichst ungünstigen Termin zu finden, der von der Personalleiterin sicher geändert werden wird. Sie nehmen sich vor, zu diesem Termin 2 Autos in Reserve zu haben und zusätzlich noch ein Taxi vorzubestellen. A. Ein ganz normaler Tag B. Wer ist schuld? Um die eingangs erwähnte Wechselwirkung von scheinbar komplett unabhängigen Systemen zu veranschaulichen, gibt Charles Perrow in seinem Buch “Normal Accidents: Living with High-Risk Technologies“ ein einfaches, alltägliches Beispiel [1]: Sie haben nach großen Anstrengungen an diesem Morgen endlich ein lang ersehntes Bewerbungsgespräch. Jedoch hat Ihre Freundin beim Verlassen des Hauses die gläserne, fast leere Kaffeekanne auf der angeschalteten Heizplatte der Kaffeemaschine vergessen, infolge dessen diese gesprungen ist. Da Sie jedoch früh morgens unbedingt Kaffee zum wach werden benötigen, suchen Sie hektisch nach Filterpapier und einem Filter. Nachdem Sie diesen gefunden haben machen Sie sich hektisch Ihren Kaffee und verlassen eilig das Haus. Auf dem Weg zum Auto bemerken Sie, dass der Schlüsselbund noch im Haus liegt. Das würde normalerweise kein Problem darstellen, da Sie noch einen Zweitschlüssel unter einem falschen Stein versteckt haben (Redundanz). Jedoch haben Sie den Schlüssel am vorhergehenden Abend einem Bekannten gegeben, der im Laufe des Tages einige Bücher bei Ihnen holen möchte (Der “Redundanzpfad“ ist nicht weiter gangbar). Glücklicherweise haben Sie ja noch einen freundlichen alten Herren als Nachbarn, der seinen Wagen nur selten fährt und regelmäßig warten lässt. Noch bevor Sie mit Ihrer Nun stellt sich die Frage, was die primäre Ursache, die zu dieser Verkettung unglücklicher Umstände führte. War es menschliches Versagen, also das Nichtabschalten der Kaffeemaschine oder das darauffolgende Vergessen des Schlüssels im Haus. Oder war es ein mechanischer Defekt, also der Ausfall der Lichtmaschine? Oder trägt die Umwelt Schuld, in Form der Aussperrung der Busfahrer und der daraus resultierenden Überlastung des Taxiverkehrs oder die Anordnung des Systems, das ein Ausschließen ermöglicht und keine Reservetaxen für Notfälle vorsieht. Je nach persönlicher Sicht findet jeder für sich eine Hauptursache. Dies führt bei großen Unfällen und Katastrophen dazu, dass wie beispielsweise bei der Explosion der Deepwater Horizon Plattform die Verantwortung von einer Stelle an die andere Stelle weitergeschoben wird. BP beschuldigt die Betreiberfirma, diese den Hersteller, dieser wiederum BP usw. [6] Auch im Alltagsbeispiel fällt eine klare Bestimmung der Ursache schwer, da keiner der einzelnen Zwischenfälle für sich genommen ein Problem darstellt. Für scheinbar jede Eventualität wie Schlüsselvergessen, Autodefekt etc. existierte eine Redundanz. Nach Charles Perrow [1] sind solche Unfälle bzw. Katastrophen ab einem gewissen Komplexitätsgrad unvermeidlich. Jedoch ist die Ursache hierfür nicht in menschlichem Versagen zu suchen, sondern in der Komplexität des Systems, denn erst die entstehenden Zusammenhänge führen die einzelnen unabhaengigen Zwischenfälle zur Katastrophe. Dieser Beitrag entstand im Rahmen des Konferenzseminars ÏT-Sicherheit”, das im Wintersemester 2010/11 an der Universität Erlangen-Nürnberg durchgeführt wurde. Es wurde organisiert vom Lehrstuhl für ITSicherheitsinfrastrukturen (Prof. Dr. F. Freiling). Kilian Redel 19 (Un-)sicherheit in komplexen Systemen ITSEC@i1 2011 X-2 Da jeder Mensch mit den Begriffen Unfall, Zwischenfall etc. etwas anderes verbindet, sollen im folgenden Kapitel zunächst einige Definitionen zu Systemen, Unfällen und dergleichen erläutert werden. Im dritten Abschnitt der Arbeit soll anhand des Kernschmelzunfalls im Block 2 des Three Mile Island, der im Buch von Charles Perrow ausführlich behandelt wird, nochmals die Komplexität von derartigen Systemen veranschaulicht werden. Im 4. Abschnitt sollen die Schwierigkeiten komplexer Systeme auf den IT-Bereich übertragen werden. Als Beispiel hierfür dient unter anderem Stuxnet, ein Wurm, der sich in industriellen Steuerungsanlagen einnistet und das Verhalten der Steuerung manipulieren kann. II. B EGRIFFSKL ÄRUNG A. Unfälle Die Mindestanforderung an einen Unfall ist, dass es ein “unbeabsichtigtes und unvorteilhaftes Ereignis “ ist. Diese Mindestanforderung wird jedoch bereits durch ein bloßes Verfahren mit dem Auto erfüllt. Niemand würde allerdings auf die Idee kommen zu sagen, dass er einen Unfall hatte, wenn er sich lediglich verfahren hat. Also erscheint eine genauere Definition bzw. Unterteilung des Begriffs notwendig. Hierfür ist es sinnvoll ein System zunächst in Bestandteile zu zerlegen. Diese sind in aufsteigender Reihenfolge: Teil, Einheit, Subsystem und System. Ein Teil ist beispielsweise ein Ventil in einer Kühlanlage eines Schlachthauses. Diese Kühlanlage wiederum kann zusammen mit ihren anderen Bestandteilen als Einheit betrachtet werden. Zusammen mit der Isolierung etc. bildet es das Subsystem “Kühlhaus“. Dieses Subsystem bildet zusammen mit anderen Subsystemen das System “Schlachthaus“. Nach dieser Aufteilung des Systems kann man den Begriff Unfall ebenfalls in Störfall und Unfall differenzieren. Ein Störfall betrifft lediglich einen Teil oder eine Einheit und kann, muss jedoch nicht das System beeinträchtigen. Störungen bzw. Schäden die ganze Subsysteme oder gar das komplette System betreffen, also den Funktionsablauf vollkommen unterbrechen oder den Ablauf so beeinflussen, dass kein Weiterbetrieb möglich ist werden als Unfälle bezeichnet. Bei Unfällen unterscheidet man Komponentenunfälle und Systemunfälle. Erstere werden durch einen oder mehrere Fehler bzw. Fehlfunktionen verursacht, deren Zusammenhang logisch und vorhersehbar ist. Im Eingangsbeispiel wäre dies die Nichtverfügbarkeit eines Taxis aufgrund der Aussperrung. Der Systemunfall dagegen ist durch mehrere Fehler verursacht, bei denen der Zusammenhang nicht vorhersehbar war. Im Alltagsbeispiel die Verkettung des defekten Autos mit dem liegengelassenen Schlüssel. B. Komplexe und Lineare Systeme Wichtige Unterscheidungsmerkmale von Systemen sind, ob sie komplex oder linear bzw. eng oder lose gekoppelt sind. Im Folgenden sollen diese Eigenschaften näher erläutert werden und auch auf einige deren Vor- und Nachteile eingegangen werden. 1) Lineare Systeme: Ein lineares System kennzeichnet sich in erster Linie durch die lineare Anordnung der einzelnen Vorgänge. Auf Schritt A folgt stets der Schritt B. Im Falle eines Ausfalls oder fehlerhaften Verhaltens eines Vorgangs Kilian Redel treten keine unvorhersehbaren Interaktionen auf. Wenn also ein Schritt ausfällt bedeutet das in der Regel nicht, dass auch ein darauffolgender Schritt fehlerhaft arbeitet. Die Anzahl der Vorgänge spielt hierbei keine Rolle. Ein einfaches Beispiel für ein lineares System wäre ein Montageband bei dem sich nach Ausfall einer Maschine zwar die Teile stauen, jedoch keine unvorhergesehenen Rückwirkungen auf andere Teile der Produktion auftreten. 2) Komplexe Systeme: Im Gegensatz zu den linearen Systemen kann bei komplexen Systemen nicht immer exakt vorhergesagt werden, welche Folgen eine Aktion hat. Dies beruht darauf, dass auch Teile oder Einheiten, die in keinem sequentiellen Zusammenhang stehen sich gegenseitig beeinflussen können. Viele Komponenten haben eine CommonMode-Funktion. Dies bedeutet, dass eine Komponente mehrere Aufgaben übernimmt. Eine Komponente kann ein Teil, Einheit oder ein ganzes Subsystem sein. Ein Wärmetauscher kann beispielsweise als Kühlung für eine Komponente und als Heizvorrichtung für eine weitere Komponente dienen. Fällt also diese Komponente aus sind beide angeschlossenen Komponenten betroffen. Zudem existiert bei komplexen Systemen die Möglichkeit von unbekannten und unbeabsichtigten Rückkopplungen. Außerdem besitzen komplexe Systeme ein Vielzahl an Kontrollparametern mit einer Vielzahl von möglichen Wechselwirkungen auf andere Parameter. Es kann also leicht zu einer Art Butterfly-Effect kommen. Auch sind bei komplexen Systemen häufig lediglich indirekte Informationsquellen vorhanden sind. Etwa wenn der Füllstand eines Wassertanks nicht direkt über einen Schwimmer gemessen wird, sondern indirekt über den Druck auf ein Ventil am Auslass. Die Tatsache, dass ein System komplex ist bedeutet nicht, dass zwangsläufig auch ein Katastrophenpotential vorhanden ist. So ist auch eine Universität ein hochkomplexes System, jedoch mit begrenztem Katastrophenpotential. 3) Komplex vs. Linear: Lineare Systeme besitzen den klaren Vorteil, dass sie durchschaubar sind. Es gibt keinerlei unerwartete Wechselwirkungen und sind daher leicht beherrschbar und Unfälle sind vermeidbar. Da keine Spezialisierung der Operateure erforderlich, kann das System von Generalisten bedient werden, die die Abläufe überblicken und verstehen können und im Fehlerfall eingreifen können. Das Bedienpersonal ist somit substituierbar. Dies führt zu einer besseren Sytemregenerierung nach einem Unfall, da der Ausfall eines Bedieners durch das Einsetzen eines anderen kompensiert werden kann. Im Gegensatz hierzu haben komplexe Systeme erhebliche, mitunter potentiell gefährliche, Nachteile. Einer davon liegt mitunter in den gegenseitigen Wechselwirkungen. Zwar bauen die Konstrukteure eine Vielzahl an Sicherheitsvorkehrungen ein, die diese Wechselwirkungen verhindern sollen, jedoch lassen sich zum Einen niemals alle Redundanzen beseitigen und zum Anderen führen oft gerade diese Sicherheitsvorkehrungen zur Steigerung der Komplexität und damit unter Umständen zur Fehleranfälligkeit. Auch ist der Operateur in komplexen Systemen auf indirekte Rückmeldungen durch beispielsweise Leuchtmeldern Anzeigen angewiesen. Dies kann dazu führen, dass etwa aufgrund eines Drahtbruchs an einem Sensor, ei- 20 (Un-)sicherheit in komplexen Systemen ITSEC@i1 2011 X-3 ne Falschmeldung entsteht. Dies bewirkt unter Umständen, dass der Operateur fälschlicherweise ein Fehlverhalten der Anlage annimmt und Gegenmaßnahmen einleitet, die wiederum dazu führen, dass überhaupt erst ein Fehler entsteht. Demzufolge müssten auch die Sensoren selbst überwacht werden. Diese Überwachungskette lässt sich nun fast unbegrenzt weiterführen. Die Herausforderung bei der Entwicklung komplexer Systeme besteht auch darin, dem Bedienpersonal, das nicht den kompletten Prozess überblickt, nicht zu viele Informationen anzuzeigen, um Überforderung zu vermeiden. Dennoch müssen alle relevanten Informationen abrufbar sein, damit im Ernstfall richtig reagiert werden kann. Nach Abwägung aller Argumente scheint es, dass lineare Systeme die erheblich besseren Systeme wären, da sie besser beherrschbar, weniger fehleranfällig und im Fehlerfall leichter wiederherstellbar sind. Daher versuchen Ingenieure möglichst viele Prozesse zu linearisieren. So wurde beim Flugzeug der komplexere Kolbenmotor von dem einfacheren Düsenantrieb abgelöst. Allerdings lassen sich Common-Mode Funktionen in vielen Fällen nicht vermeiden. Auch sind einige Prozesse, beispielsweise in Ölraffinerien oder Chemiefabriken, gar nicht erst als lineare Prozesse realisierbar. Der entscheidende Vorteil von komplexen Systemen ist jedoch ihre höhere Effizienz. So werden beispielsweise bei dem bereits aufgeführten Wärmetauscher, die Ressourcen sehr effizient genutzt. Man versucht daher komplexe Prozesse, wo dies ökonomisch und technisch sinnvoll ist zu vermeiden und durch lineare zu ersetzen. C. Enge und lose Kopplung Eine weiteres Unterscheidungsmerkmal von Systemen ist die Art der Kopplung ihrer Komponenten. Die Art der Kopplung ist unabhängig von der Komplexität oder Linearität des Systems. 1) Enge Kopplung: Enge Kopplung bedeutet, dass zwischen zwei Teilen keine Verzögerung in der Abarbeitung möglich ist, es also keine Pufferung gibt die etwaige Zeitverzögerungen ausgleichen kann. Zusätzlich bedeutet enge Kopplung auch eine Invarianz des Systems. Die Möglichkeit zwei Komponenten zu vertauschen ist also nicht vorhanden. In den Bereichen Versorgung, Ausrüstung und Personal ist ebenfalls kaum Variation oder Verzögerung möglich. Änderungsmöglichkeiten müssen von vornherein eingeplant sein. Es führt nur ein Weg zum Ziel und jeder Fehler hat zwangsläufig Auswirkungen auf das mit ihm eng gekoppelte System. Grundsätzlich sind eng gekoppelte Systeme sehr effizient und schnell, jedoch auch unflexibel. Beispiel hierfür wäre Just-In-Time Fertigung. Tritt hier eine Verzögerung in einem Bereich auf hat dies sehr schnell Auswirkungen auf die gesamte Produktion. Auch der Austausch von Lieferanten oder eine Veränderung im Produktionsablauf ist nahezu unmöglich bzw. zieht grundlegende Ablaufänderung mit sich. 2) Lose Kopplung: Bei loser Kopplung hingegen wirken sich Fehler nicht zwangsläufig direkt auf die gekoppelte Komponente aus. Es sind meist alternative Methoden vorhanden die ebenfalls zielführend sind und einzelne Sequenzen sind untereinander austauschbar. Ebenfalls möglich sind Verzögerungen Kilian Redel oder Variationen in Versorgung, Ausrüstung und Personal. Ein Beispiel für lose Kopplung ist die Schule. Fällt ein Lateinlehrer aus, kann dieser durch einen anderen Lateinlehrer oder, bei einem kurzen Ausfall, sogar durch einen beliebigen anderen Lehrer ersetzt werden ohne, dass die Bildung der Schüler leidet. III. T HREE M ILE I SLAND Am 28. März 1979 ereignete sich im Kernkraftwerk Three Mile Island etwas was nach Einschätzungen der Atomgutachter gar nicht hätte passieren können. Der Reaktorblock 2 des Kraftwerks geriet außer Kontrolle. Es war die erste Kernschmelze in einem Großreaktor. Die Operateure der Betreiberfirma Metropolitan Edison Company sowie eine große Zahl an Experten benötigten fast eine Woche bis der Reaktor wieder weitgehend stabil lief. Bis heute ist die einzige Erklärung für das Ausbleiben eines Super-GAU Glück. Seit diesem Unfall wurde in den USA kein weiteres Atomkraftwerk gebaut. Erst Anfang des Jahres 2010 hat die amerikanische Regierung Kreditzusagen für den Bau von zwei Reaktoren angekündigt [7]. In diesem Kapitel soll zunächst kurz die Technik des Kraftwerks erklärt und der Hergang des Unfalls beschrieben werden. Im letzten Abschnitt wird der Unfall in Bezug auf die Eigenschaften komplexer Systeme analysiert. A. Technik Das Kernkraftwerk Three Mile Island (TMI) besitzt, wie auch 11 der 17 Atommeiler in Deutschland [8], die Druckwasserreaktorbauform. Kennzeichnend für diese Bauform sind die zwei getrennten Kühlkreisläufe, Primär- und Sekundärkreislauf. Um ein Sieden bei Betriebstemperatur von über 300◦ C zu vermeiden steht das Kühlmittel im Primärkreislauf unter Druck. Es wird durch den Reaktorkern geleitet und nimmt dort, die von der Kernspaltung erzeugte, Wärme auf. Von dort aus gelangt es in den Dampferzeuger wo es das Wasser des Sekundärkreislaufs zum sieden bringt. Der so erzeugte Wasserdampf wird über Rohrleitungen in eine Dampfturbine geleitet, welche über den angeschlossenen Generator Strom erzeugt. Der Dampf wird anschließend in einem Kondensator niedergeschlagen und von dort als Wasser mit der Speisepumpe wieder dem Dampferzeuger zugeführt. Der Kondensator wiederum wird mit Kühlwasser, beispielsweise aus einem Fluss, gekühlt. Der Vorteil dieser Bauform ist, dass durch die zwei getrennten Kühlkreisläufe keine radioaktiven Stoffe das Reaktorgebäude verlassen, da nur der Primärkreislauf radioaktiv ist. Nachfolgend zur besseren Übersicht und Nachverfolgbarkeit der Abläufe ein Überblick über den Block 2 des TMI. Deutlich in der Grafik zu erkennen sind Primär und Sekundärkreislauf etc. Zusätzlich zu sehen sind noch einige Sicherheitseinrichtung, deren Funktion bzw. Fehlfunktion bei dem Unfall 1979 wichtige Rolle spielen. B. Unfallhergang Aufgrund von Problemen in der Pumpensteuerung fielen am 28.März 1979 um 4:36 Uhr Ortszeit bei Arbeiten an der Kondensatreinigungsanlage im nichtradioaktiven sekundären 21 (Un-)sicherheit in komplexen Systemen ITSEC@i1 2011 X-4 Abbildung 1. Vereinfachte Darstellung von Block 2 Kreislauf die beiden Hauptspeisepumpen aus. Angeblich aufgrund der Tatsache, dass jemand absichtlich oder unabsichtlich eine Luftleitung mit einer Wasserleitung verbunden hatte. Dies war möglich, da beide Systeme aufgrund eines Konstruktionsfehlers über den gleichen Anschluss verfügten. 1) Fehlfunktion Sicherheitsventil im Primärkreislauf: Als Reaktion auf den Ausfall der Pumpen schaltete sich zunächst der Turbosatz und darauf der Kernreaktor durch SCRAM (Notabschaltung) ab, wodurch die nukleare Kettenreaktion beendet wurde. Da jedoch nach einer Notabschaltung noch eine immense Menge an Nachzerfallswärme frei wird stieg der Druck im Druckhalter (Pressurizer) auf 7 bar über Normaldruck an. Um einen druckbedingten Leitungsbruch im radioaktiven primären Kühlsystem zu vermeiden war ein PORV (Pilot operated relief valve) vorhanden. Dieses öffnete sich korrekterweise aufgrund des Überdrucks. Nachdem der Druck nach 13 Sekunden wieder unter 155 bar gefallen war schloss sich das Ventil, anders als vorgesehen, nicht wieder. Dieses Fehlverhalten blieb über mehr als zwei Stunden unbemerkt. Währenddessen lief das Kühlmittel zunächst in den Abblasetank bis dieser voll war und hierauf, aufgrund einer gebrochenen Berstscheibe des Tanks, ins Containment, den Sicherheitsbehälter des Reaktors. Die Anzeigen im Kontrollraum zeigten diesen, sich anbahnenden Kühlmittelverluststörfall nicht an wodurch ein Schließen des Ventils ausblieb und der Druck weiter sank. 2) Probleme im Speisewassersystem: Etwa zeitgleich ereignete sich an anderer Stelle des Kraftwerks ein weiteres Problem. 42 Stunden vor dem Unfall wurden im Rahmen eines Tests des Notfall-Speisewassersystem, zwei Absperrventile geschlossen. Nach Ende des Tests wurden diese, entweder wegen menschlichen Versagens oder aufgrund eines Verfahrensfehlers nicht wieder geöffnet. So nahmen, nach Ausfall der Hauptspeisepumpen die Reserverpumpen zwar ihren Betrieb ordnungsgemäß auf, konnten jedoch wegen der geschlossenen Ventile den Dampferzeuger nicht mit Wasser versorgen und die Nachzerfallswärme nicht abgeführt. Dieser Fehler wurde jedoch nach 8 Minuten erkannt und die Ventile geöffnet. Das Notspeisesystem konnte so den Dampferzeuger wieder ordnungsgemäß mit Wasser versorgen. 3) Fehleinschätzung der Situation: Durch den Druckabfall im Primärkreislauf bildeten sich dort Dampfblasen, Kilian Redel die das Kühlmittel in den Druckhalter drückten. Da der Füllstandsgeber seine Werte nur aus dem Druckhalter erhielt und dieser nun mehr Wasser als normal enthielt, nahm der Bediener an, dass das System überfüllt sei und stoppte die korrekterweise angelaufene Notkühlung, da die Reaktorfahrer in ihrer Ausbildung dazu angehalten wurden ein vollständiges Volllaufen des Druckhalters unter allen Umständen zu verhindern, da die im Normalbetrieb im Druckhalter vorhandene Dampfblase verhindern soll, dass Rohrleitungen im Fall eines Druckstoßes bersten. Jetzt befand sich jedoch eine Dampfblase im oberen Bereich des Reaktorbehälters. 4) Temperaturanstieg und weitere Fehleinschätzung durch Bedienpersonal: Da die Pumpen nur noch Dampf ansaugten wurden diese abgeschaltet und man nahm an, dass der Wasserfluss durch die natürliche Konvektion aufrecht erhalten würde. Der Wasserfluss wurde jedoch durch Dampfblasen in den Rohren blockiert und das stehende Wasser verwandelte sich zunehmend in Dampf, so dass 130 Minuten nach der ersten Fehlfunktion der obere Teil des Reaktors nicht mehr von Kühlflüssigkeit umgeben war. Durch die geringere Wärmekapazität des Dampfes wurde nur noch eine geringe Menge Wärme von den Brennstäben abtransportiert und die Temperatur stieg weiter. Richtig wäre in dieser Situation gewesen, den Druck im Primärkreislauf aufrecht zu erhalten um ein Verdampfen des Wassers zu verhindern. 5) Knallgasbildung: Durch eine temperaturbedingte Zirconium-Wasser-Reaktion oxidierte die Hülle der Brennstäbe und Wasserstoff wurde freigesetzt. Dieser gelangte, nachdem er sich zunächst am Reaktordeckel gesammelt hat über das offene PORV zum Druckhalter - Abblasetank und von dort mit dem Kühlmittel ins Containment, wo sich zusammen mit Luftsauerstoff Knallgas bildete. Nachdem sich das ausgelaufene Kühlmittel am tiefsten Punkt des Sicherheitsbehälters (Reactorbuilding) gesammelt hatte wurde es, aufgrund eines Schaltfehlers, von dort in einen Tank im Hilfsanlagengebäude gepumpt, der überlief und ein kleinerer Teil radioaktiver Gase aus dem Wasser gelangte in die Umgebung. 6) Erkennung der Übertemperatur: Als um 6 Uhr die nächste Schicht die Übertemperatur bemerkte und den Kühlwasserverlust über ein Reserveventil stoppte war bereits eine immense Menge Kühlmittel entwichen und die Radioaktivität im primären Kühlkreislauf 300-mal so hoch wie erwartet: Die Kernschmelze war im Gange. 7) Erfassen des kompletten Ausmaßes und Sabilisierung: Erst dreieinhalb Stunden nach Beginn des Unfalls wurde der viel zu niedrige Wasserstand von hinzugekommenen Experten bemerkt, neues Wasser in den Primärkreis gepumpt und etwas später ein Reservesicherheitsventil zur Druckreduzierung geöffnet. Das Knallgasgemisch im Containment entzündete sich nach 9 Stunden, wodurch dessen Innendruck kurzzeitig fast seine Auslegungsgrenze erreichte. Erst nach 16 Stunden wurden die Pumpen des primären Kreislaufs wieder in Betrieb genommen und die Temperatur des Kerns, der zu einem großen Teil geschmolzen war, begann zu sinken. Rund eine Woche später waren Wasserstoff und Wasserdampf über Kondensatoren und durch einfaches Ablassen in die Atmosphäre entfernt. 22 (Un-)sicherheit in komplexen Systemen ITSEC@i1 2011 X-5 C. Analyse des Unfalls im Bezug auf Eigenschaften komplexer Systeme Der Unfall im Three Mile Island Kraftwerk veranschaulicht deutlich die Gefahren komplexer Systeme: Eine ausführliche Untersuchung des Unfalls kam zu dem Ergebnis, dass die Hauptursache darin bestand, dass das offene PORV nicht bemerkt worden war, weshalb das radioaktive Wasser austreten konnte, wodurch zum Einen das Knallgas entstehen konnte und es zum Anderen aufgrund mangelnder Kühlung zur Kernschmelze kommen konnte. Der Grund für das späte Erkennen des offenen PORV liegt darin, dass die Kontrolleuchte lediglich den Stromfluss an der Steuerspule des Ventils anzeigte und nicht, etwa über einen Endlagenschalter, in welcher Position sich das Ventil befindet. Die Anzeige zeigte keinen Stromfluss, so dass das Bedienpersonal davon ausging, dass das Ventil geschlossen war. Eine weitere Fehlerquelle aufgrund indirekter Informationsanzeigen war, dass der Füllstand des Kühlkreislaufs lediglich aus dem Druckbehälter bezogen und so fälschlicherweise eine Überfüllung des Primärkreislaufs angenommen wurde. Auch die Eigenschaft der Wechselwirkungen in komplexen Systemen wurde bei dem Unfall deutlich. So führte das Fehlverhalten eines Ventils dazu, dass Kühlmittel austreten konnte. Dieses verkettete sich mit dem Umstand, dass aufgrund der geschlossenen Ventile die Nachzerfallswärme nicht sofort abgeführt werden konnte. Zwar behaupteten die für die Wartung zuständigen Ingenieure die Ventile wieder geöffnet zu haben. Dies kann jedoch ein Irrtum gewesen sein, wie wenn man denkt die Haustür abgeschlossen zu haben, weil man es immer macht. So hatten die Ingenieure hier etliche Ventile zu stellen, so dass es passieren konnte, dass eben jene 2 Ventile vergessen wurde (Heute fahren die Ventile nach Ziehen des Schlüsselschalters automatisch wieder in Ausgangsposition). Auch waren die Mitarbeiter laut des Untersuchungsberichts unzureichend ausgebildet um die komplexe Situation korrekt erfassen zu können, was auch daran deutlich wird, dass der niedrige Wasserstand zu spät bemerkt wurde und erst nach Eintreffen von Fachleuten die richtigen Gegenmaßnahmen ergriffen wurden. Es stellt sich die Frage inwieweit sich ein solcher Unfall heutzutage noch ereignen kann. Vermutlich werden die eben genannten Fehler nicht noch einmal passieren, da sich seit damals die Überwachungsmöglichkeiten sowohl bei der Sensortechnik als auch im Bereich der Anzeigeinstrumente verbessert haben. Eine moderne Steuerung kann beispielsweise eine potentiell gefährliche Fehlermeldung direkt auf einen zentralen Monitor schalten. Auch wird durch grafische Benutzeroberflächen eine wesentlich übersichtlichere Darstellung als mit Leuchtmeldern ermöglicht. Es können beispielsweise im Normalbetrieb nur die Grundinformationen bereitgestellt werden und gleichzeitig über Menüs usw. genauere Informationen schnell abrufbar sein. Anfallende Störmeldungen werden sofort in den Vordergrund gesetzt. Doch entstehen eben durch diese besseren, leistungsfähigeren, oft universalen Steuerungen, die zweifelsohne eine Steigerung der Sicherheit ermöglichen, neue Fehlerquellen bzw. Bedrohungen, wie jüngst der Computerwurm Stuxnet gezeigt hat. Kilian Redel Auf Stuxnet und andere Gefährdungen sowie neue Komplexitäten, die durch den Einzug von Computertechnik in nahezu alle Lebens- und Versorgungsbereiche entstanden sind soll im nächsten Kapitel eingegangen werden. IV. KOMPLEXIT ÄT UND DEREN G EFAHREN IM IT-B EREICH Wie bereits erwähnt werden heutzutage die meisten großen Industrieanlagen über Software gesteuert. In der Theorie werden Informationen zwischen einzelnen Anlagenbereichen ausgetauscht und automatisch ausgewertet, wodurch schnell und ohne die Gefahr menschlicher Fehlentscheidungen von der Software richtig gehandelt wird. Fraglich ist in welchem Maße die Sicherheit von großen Anlagen sich tatsächlich verbessert hat oder ob durch den gestiegenen Automatisierungsgrad nur die Komplexität und Effizienz gesteigert wurde. In den folgenden Seiten soll, unter anderem anhand des Stuxnet-Wurms, die Gefahr eines unsichtbaren Angriffs von außen, die ohne Zweifel durch die mit der steigenden Automatisierung einhergehenden Vernetzung entstanden bzw. gestiegen ist, verdeutlicht werden. Außerdem soll auf die Versuche durch gutes Softwareengineering sowohl Security, also der Schutz gegen Angriffe von außen, als auch Safety, den Schutz vor Fehlfunktionen, zu gewährleisten. A. Unterschiede Software-Engineering / klassisches Engineering Heute hält Software auch in Bereiche Einzug, die ehemals klassischen Ingenieurswissenschaften vorbehalten waren, wie etwa Fahrzeugbau, der nach wie vor eine Domäne der Maschinenbauer ist. Angefangen von Multimediasystemen, bis zur Motorsteuerung kommt kein modernes Auto mehr ohne Software aus. Einige Autos würden ohne Software sogar in schnellen Kurven umkippen [2]. Jedoch weist die Entwicklung von Software einige wichtige Unterschiede zur Entwicklungsarbeit in klassischen Ingenieurswissenschaften auf. Software verursacht praktisch keinen Fertigungsaufwand. Demnach ist die Entwicklung der Hauptbestandteil des Herstellungsprozesses, was dazu führt, dass man bestrebt ist Software nach Möglichkeit wiederzuverwenden. Häufig wird dieser Anpassungsaufwand jedoch unterschätzt, da scheinbar nur wenige Zeilen Code geändert werden müssen und es treten im Betrieb Fehler auf. Daher ist die im allgemeinen sehr hohe Anpassungsfähigkeit von Software auch eine sehr große Fehlerquelle. Da Softwaresysteme hochkomplex sind, schon mittelgroße Programme bestehen aus mehreren Dokumenten einigen tausend Zeilen Code, können kleine Änderungen oder Fehler in der Ausführung zu großen Fehlern führen. Eine weitere Schwierigkeit bei Softwaresystemen besteht darin, dass Fehler sich in der Regel nicht ankündigen, wie dies beispielsweise bei einem falsch dimensionierten Brückenpfeiler der Fall ist, sondern plötzlich auftreten können. Im nächsten Abschnitt sollen anhand des Negativbeispiels des Therac-25 mögliche Fehlerquellen von Software erläutert werden aber auch wie durch gutes Softwareengineering eben diese gemieden werden können. 23 (Un-)sicherheit in komplexen Systemen ITSEC@i1 2011 X-6 B. Sicherstellung von Safety und Security 1) Safety: Mit dem Begriff Safety ist gemeint, dass das Programm frei von Fehlfunktionen ist. Zunächst soll kurz der Therac-25 berühmtes Beispiel für Softwarefehler beschrieben werden. Der Therac-25 war ein Bestrahlungsgerät zur Behandlung von Tumoren, das zwischen 1985 und 1987 in den USA und Kanada eingesetzt wurde. Durch Softwarefehler und fahrlässiges Verhalten beim Umgang mit Fehlern kam es zu 6 Todesfällen. Der Therac-25 war das erste Gerät seiner Baureihe, das eine reine Computersteuerung besaß, die die notwendigen Parameter, wie Strahlungsintensität oder Stellung des Strahlungsarms kontrollierte. Diese Software enthielt jedoch zwei Bugs die zu den Unfällen führten. Der Texas-Bug, verantwortlich für Unglücke in Texas, bestand darin, dass ein Flag, durch dessen Setzen Änderungen von Benutzereingaben erkannt werden, von einer Subroutine gelöscht wurde. Bei der Eingabe der Daten für die Bestrahlung hatte eine Technikerin versehentlich Röntgenstrahlung (hohe Intensität) eingestellt. Zwar bemerkte sie den Fehler und änderte den Eintrag, jedoch war sowohl das DataEntry Complete Flag durch erreichen des unteren rechten Displayrandes bereits gesetzt, als auch das Flag für das Erkennen von Korrekturen bereits gelöscht. Infolgedessen erhielt die Patientin eine starke Überdosis. Ein weiterer Fehler war der Washington-Bug, ein ähnlich simpler, jedoch folgenreicher Fehler, der im Wesentlichen auf einem Overflow beruht. Nach Einstellen der Behandlungsparameter wurde die Set-Up-Test-Routine aufgerufen. Hatte die Variable Class3 den Wert null konnte mit der Behandlung begonnen werden. Allerdings wurde die Variable mit jedem Durchlauf der Routine inkrementiert und die Routine konnte mehrere hundert Mal aufgerufen werden bis alles korrekt eingestellt war. Da die Variable jedoch nur ein Byte groß war wurde sie bei jedem 256. Aufruf wieder null. Deshalb wurde nicht mehr überprüft in welcher Stellung sich etwa der Strahlungsarm befand. Dies führte ebenfalls zu gefährlichen Strahlenbelastungen für die Patienten. Die Ursachen für das Entstehen bzw. Nichterkennen dieser Fehler liegt unter anderem darin, dass die Software von einem Entwickler allein über mehrere Jahre entwickelt wurde. Auch hielt der Hersteller die Software für unfehlbar und beschränkte die Tests Sicherheitsabschätzungen sowie die spätere Fehlersuche zunächst auf die Hardwareebene. Zu alledem kam noch mangelnde Dokumentation des Programms und wenig aussagekräftige Fehlermeldungen, wie “Fehler Nr. xy“, von denen bis zu 40 pro Tag erschienen und vom Bedienpersonal deshalb nicht mehr beachtet wurden [10]. Heute nimmt der Schutz vor Fehlfunktionen in der Softwareentwicklung, gerade bei sicherheitskritischen Bereichen wie der Medizintechnik einen hohen Stellenwert ein. Es existieren Entwicklungsmodelle, wie das V-Modell, bei denen die Softwareentwicklung in Schritte aufgeteilt wird. Dies beginnt mit der Anforderungsanalyse, bei der die Anforderungen an die Software umrissen werden und geht über Spezifikationsphase, Designphase, Grobentwurf bis zum Feinentwurf der einzelnen Softwaremodule. Zwischen jedem einzelnen Schritt Kilian Redel wird validiert und verifiziert, ob die aus der höheren Stufe gekommenen Anforderungen erfüllt sind. Danach geht es in die Implementierung. Hier wird mit den einzelnen Modulen begonnen und Schritt für Schritt bis zur Installation des gesamten Systems vorgegangen [3]. Auch hier wird nach jeder Phase getestet, ob die geforderten Funktionen vorhanden sind und funktionieren. Zusätzlich holen sich Hersteller, wie beispielsweise Siemens Healthcare, Unterstützung von auf Softwaretests spezialisierten Unternehmen, um ihre Software auf Fehlerfreiheit und Sicherheit zu überprüfen [9]. 2) Security: Die Fehlerfreiheit und die Zuverlässigkeit von Programmen hilft jedoch wenig, wenn die Software von außen angreifbar ist und manipuliert werden kann, so dass der fehlerfreie Betrieb nicht mehr gewährleistet ist. Zur Sicherung der Software gegen unerlaubten Zugriff oder gar Manipulation werden unterschiedliche Methoden, sowohl auf Software- als auch auf Hardwareebene angewandt. Eine erste Methode zur Abwehr von Angriffen ist das Schreiben von sicherem Code, um beispielsweise einen von außen verursachten Systemabsturz durch einen provozierten Bufferoverflow zu verhindern. Eine weitere Maßnahme ist das Verteilen von Zugriffsrechten. Also dürfen zum Beispiel über das Benutzerkonto, unter welchem eine sicherheitskritische Anwendung läuft, keine Änderungen vorgenommen werden. Um dies zu ermöglichen ist eine sichere Authentifizierung eines Benutzers notwendig, damit nur der auf eine kritische Anwendung zugreifen kann, der dazu berechtigt ist. Hierfür ist es nötig ein sicheres Authentifizierungsverfahren zu verwenden, das nicht etwa durch einfaches Passwortraten zu knacken ist. Auch ist ein Schutz der verhindert, dass unsichere Software auf den Rechner gelangt, sinnvoll. Dies geschieht u.a. durch die Verifizierung von Software, d.h. Software von bestimmten Herstellern wird als vertrauenswürdig eingestuft und darf installiert werden. Hierfür benötigt die Software ein Zertifikat, mit dem sie nachweist, dass sie wirklich von einem sicheren Hersteller ist. Eine einfache hardwareseitige Sicherheitsmaßnahme besteht darin, sicherheitskritische PC’s nicht in ein Netzwerk einzubinden, über welches Internetzugang besteht. Auch ist es sinnvoll solche Rechner nicht mit einem USB-Anschluss oder CD-Laufwerk auszustatten, damit potentielle Schadsoftware gar nicht erst installiert werden. Allerdings kann bei Wartungsarbeiten ein Zugriff auf diese Rechner über USBStick etc. vonnöten sein. Hier sollte durch den Einsatz von Virenscannern, Firewalls etc., sichergestellt werden, dass keine Schadsoftware auf den Rechner gelangt. Zu alledem ist es extrem wichtig die mit dem System betrauten Mitarbeiter ausreichend zu schulen und zu überprüfen, da viele Sicherheitsmaßnahmen hinfällig werden, wenn ein Mitarbeiter, mit entsprechenden Zugriffsrechten absichtlich oder unabsichtlich einen Usb-Stick mit Schadsoftware an den PC anschließt. Trotz all dieser Vorsichtsmaßnahmen ist beispielsweise ein Betriebssystem, egal ob Windows, Linux oder MAC derart komplex, dass es mit vertretbarem Kostenaufwand nicht möglich ist, Sicherheitslücken komplett zu vermeiden. Ein eindrucksvolles Beispiel für Gefährdungen von außen gab in den letzten Monaten der Computerwurm Stuxnet, der im nächsten Abschnitt betrachtet werden soll. 24 (Un-)sicherheit in komplexen Systemen ITSEC@i1 2011 X-7 C. Stuxnet Im Juni 2010 wurde erstmals der Wurm Stuxnet bekannt. Er ist der erste seiner Art, der gezielt gegen ein industrielles Steuerungssystem, in diesem Fall der Simatic S7 der Firma Siemens, gerichtet war. Gefunden wurde er unter anderem in den Steuerungsanlagen einer iranischen Anlage zur Urananreicherung. Stuxnet nutzt gezielt Lücken in Microsoft Betriebssystemen ab Windows 2000. Bei Infektion verschafft sich der Wurm zunächst über verschiedene Windows-Sicherheitslücken Administratorrechte. Die Installation selbst läuft in einem, vom infizierten System als sicher eingestuften Prozess ab. Mithilfe von signierten Zertfikaten der Firmen Realtek und JMicron Technology, die als vertrauenswürdig eingestuft sind, werden zusätzlich noch Treiberdateien geladen, um eine Weiterverbreitung zu ermöglichen. Ebenso sucht er im angeschlossenen Netzwerk nach weiteren Stuxnetinstanzen und updatet diese gegebenenfalls bzw. verbreitet sich weiter [4]. Auch wird, sobald ein USB-Stick eingesteckt wird, dieser ebenfalls infiziert. Danach nistet sich der Wurm in einen auf dem Rechner installierten Simatic Manager, der Software mit der die Simatic Systeme programmiert werden, ein. Findet er zusätzlich noch ein installiertes WinCC, mit welcher die Visualisierung für diese Systeme erstellt wird, befällt er auch dieses. Nach aktuellen Erkenntnissen wird der Wurm allerdings nur aktiv, wenn er auf Frequenzregler trifft. Mit diesen wird beispielsweise die Drehzahl von Motoren gesteuert. Eine weitere Bedingung für das aktiv werden ist, dass er auf sehr hochdrehende Motoren trifft. Ist dies der Fall beginnt er deren Drehzahlen hoch und runter zu fahren [5]. Motoren mit solchen Drehzahlen sind u.a. in Anlagen zur Urananreicherung zu finden. Stuxnet benötigt keinen Internetzugang, wenn er diesen jedoch findet ermöglicht dies sowohl Updates als auch eine Fernsteuerung der Anlage und eine Weitergabe von Informationen an den Urheber. Wichtig ist es deshalb sich der Risiken bewusst zu sein und alles zu versuchen potentielle Fehlerquellen und Angriffsmöglichkeiten abzusichern. Dennoch werden Katastrophen, Stör- und Unfälle nach Charles Perrow unvermeidlich sein sobald ein System eine gewisse Komplexität erreicht hat [1]. L ITERATUR [1] Charles Perrow, Normal Accidents: Living with High Risk Technology, New Jersey, USA:Princeton University Press, 1999 [2] www.welt.de/motor/article1280688/Mercedes und der Elch Die perfekte Blamage.html 28.11.2010 [3] Jochen Ludewig u. Horst Lichter,Software Engineering: Grundlagen, Menschen, Prozesse, Techniken, Heidelberg,Deutschland: dpunkt.verlag [4] Nicolas Falliere, Liam O Murchu and Eric Chien: W23.Stuxnet Dossier Version 1.3, November 2010, Symantec [5] www.zeit.de/2010/48/Computerwurm-Stuxnet 28.11.2010 [6] http://www.ftd.de/politik/international/:oelkatastrophe-us-regierungweist-halliburton-mitschuld-zu/50188572.html 30.12.2010 [7] http://www.n-tv.de/politik/Obama-setzt-auf-Atomkraftarticle731934.html 30.12.2010 [8] http://www.kernenergie.de/kernenergie/Themen/Kernkraftwerke/ 30.12.2010 [9] http://www.infoteam.de/de/referenzen/ 03.01.2011 [10] Martin Pfeifer: Berühmt berüchtigte Softwarefehler: Therac-25 , Universität Koblenz http://www.uni-koblenz.de/ beckert/Lehre/SeminarSoftwarefehler/Ausarbeitungen/pfeifer.pdf 03.01.2011 V. FAZIT Durch den Einzug von IT in nahezu alle Lebensbereiche ist vieles zweifelsohne sicherer geworden. Beispiele hierfür sind die zahlreichen aktiven und passiven Assistenzsysteme im Auto. Sie erfassen unzählige Parameter und werten diese aus. So kann auf erkannte gefährliche Situationen schnell und richtig reagiert werden. Auch in anderen Bereichen, wie einem Atomkraftwerk kann, wie im dritten Kapitel erwähnt, durch grafische Anzeigen, z.B. mit Hilfe von WinCC, die Überwachung komplexer Systeme vereinfacht werden, so dass Fehler besser und schneller erkannt werden. Ebenfalls enorm ist die Effizienzsteigerung und damit die Kostensenkung. Durch automatische Adresserkennung etwa arbeiten Sortierzentren so schnell, dass ein Paket meist innerhalb von 24 Std. sein Ziel erreicht. Doch im gleichen Moment entstehen neue Fehlerquellen und Angriffsmöglichkeiten. Am Beispiel Therac-25 wurden die möglichen Auswirkungen von Softwarefehlern deutlich. Stuxnet hat gezeigt, dass auch IndustriePCs ohne Internetzugang angreifbar sind. In einem Paketzentrum ist so ein Angriff nicht sehr gefährlich. Gerät jedoch ein Atomkraftwerk außer Kontrolle ist die Situation ungleich kritischer. Kilian Redel 25 Practical capabilities for UNIX ITSEC@i1 2011 1 Practical capabilities for UNIX Mykola Protsenko University of Erlangen-Nuremberg Abstract — This paper aims to overview some efforts to enhance the UNIX operating system’s security with a capabilitiesbased model. Starting with POSIX 1003.1e capabilities and describing its flaws we move on to more sophisticated solution called Capsicum, which is already planned for inclusion in FreeBSD 9. Then, to demonstrate the usage of this approach, we point out some general principles of changing legacy programs to make them use Capsicum primitives. I. INTRODUCTION I n this paper we try to overview some enhancements to the classic UNIX security model which aim to add capabilities to this system. In the next section we give a formal definition of capabilities and compare it with other security models. Then we describe how the classic UNIX security system works and review the attempt to improve its strength with a concept somehow approaching the capabilities model, namely so called POSIX capabilities, introduced in POSIX draft 1003.1e, even though they differ from the capabilities definition generally known in computer science. After that we move on to Capsicum – a new “real” capability system, planned for inclusion in FreeBSD 9. II. CAPABILITIES In this section we will introduce the term “capabilities” and review the place they take among other security concepts. The environment we have to deal with is that of a multiuser operating system, where different users may have numerous processes (executing programs) running that are working either on one distributed task or are performing several different computations. Since running a process is the only way the user can be active in our system, we will denote such a process working on behalf of a user as a subject. Each user also possesses some data stored in the system, also called resource or object, which may be required by one/some user processes for their computation (note, that any object can be both subject and resource at the same time, for instance a child process controlled by its parent process). In this context we will call the ability (or the right to do so) of a subject to perform some actions upon a certain resource This paper was written as part of the conference seminar "IT Security" which was organized by the Chair for IT Security Infrastructures (Prof. Dr. F. Freiling) at the University of Erlangen-Nuremberg during winter term 2010/2011. Mykola Protsenko an authority. A set of such authorities is often called a domain. Each subject always belongs to some domain meaning it has exactly the rights described by the domain. Note that several subjects may belong to the same domain simultaneously if they possess the same set of authorities. The above described environment defines the first and obvious security goal: the data of one user should be protected from the others. This concept is known as Discretionary Access Control (DAC): “The discretionary access control mechanism shall, either by explicit user action or by default, provide that objects are protected from unauthorized access.” [15] Another very important issue one should always keep in mind is that a program executed by one specific user should not necessarily be trusted the way the user himself is, as even the most trusted person (for instance, a system administrator) can run buggy and exploitable software. This brings us right to the next point regarding security goals: to minimize the harm caused by malicious software, we should restrict its authority. Since every process will require certain rights for its computation, this restriction has its limits, so the optimum from the security point of view is to give each subject the minimum authority it requires to perform its task. This fundamental principle is known in computer science as the principle of least privilege [10]. Summarizing this two goals of protection, we come to a simple general observation that different subjects should have different authorities with respect to different resources. The most simple and obvious way to store and manage the corresponding information in the system is a so called access matrix, presented by Lampson in [1]. In this matrix all resources available in the system are presented in rows and domains in columns. Each cell of the matrix contains the authority, describing what actions the subjects of the corresponding domain are allowed to perform on the resource. Fig. 1 shows a small example of such a matrix in a system with four resources and three domains. For the sake simplicity, the possible authorities are restricted to read-, write- and write and read access. Domain A Domain B Domain D Resource 1 read, write – – Resource 2 – – read, write Resource 3 read read – Resource 4 write – – Fig. 1. Lampson’s Access matrix. 26 Practical capabilities for UNIX ITSEC@i1 2011 2 Since the number of available resources, as well as the number of domains may be quite big, it is not practical to store it completely as it is in a real system. Usually one exploits the fact that the matrix is sparse and stores it either by rows or by columns. It may appear, that those two alternatives are semantically equal, but as described in [2], the way the system manages the storage of authorities pretty much defines the security properties of the whole system. One option is to store columns of the matrix in each resource. This means that every resource will have a so called Access Control List (ACL) associated with it, which will contain pairs <domain, authority>. Another approach is to store the list of authorities plus corresponding references to a resource in every subject (domain). This list is called a Capability List, or C-list and its elements – capabilities. So once again, we define the term capability as a reference to some resource which includes authorities to use it. Since in a capability-based model the authorities are managed by subjects, there are two important things a system must guarantee: 1) There is no way one can produce capabilities other than by “legal” system calls, in other words the capabilities must be unforgeable; 2) The delegation of capabilities from one subject to another must also be controlled by the system. These two properties imply that capabilities cannot be simply casted from/to a simple bit-array or any other type, so that they are always distinguishable from objects of other types. Next we present a brief overview of advantages/drawbacks of both models which were described in [2]. Using the ACL model it is very hard to implement a real system with the high granularity of subjects, since all authorities for each subject (domain) in the system must be stored in the resource. This means that it is not possible to create an arbitrary number of subjects with each having different rights. As a consequence, it becomes hard to develop software strictly conforming to the least privilege principle. The next important question we have to consider is the question of designation of resources. Here we use the word “designation” to describe a method to name and find a certain resource among others. As an example consider URL as a designation of resources in the internet. Since a capability includes a reference to an object, there is no need of another way of designation, i.e. other namespace as that defined by capabilities. In the ACL model on the other hand, the right to access a resource is checked after a subject’s attempt to use it, since the authorities are stored in resources. It means that a subject must be able to designate a resource even without having any authority upon it. This property of capability systems is called no designation without authority. Another related property, which capability systems have and ACL based ones don’t, is that there is no ambient authority. The ambient authority is defined in [2] as “authority that is exercised, but not selected, by its user.” This means, that when Mykola Protsenko a subject tries to access some resource, he doesn’t have to choose a corresponding authority and present it to the system on the access attempt: the decision whether the access is granted, happens automatically. To understand, why those two properties are important, let us take a look on one famous situation, known as a confused deputy pattern [2, 11]. The definition, given in [2] follows: “A deputy is a program that must manage authorities coming from multiple sources. A confused deputy is a deputy that has been manipulated into wielding its authority inappropriately.” An example of such a confused deputy was presented in [11], where a compiler is supposed to output both billing and debug information, but on behalf of two different subjects: first of the operating system and second of the invoking user. Now suppose the name of the file, where the billing information is stored (BILL), is hard-coded in the compiler program and the name of the file for debug output is provided by the user (DEBUG). If the compiler cannot distinguish this both authorities given form different sources, the user will be able to overwrite the billing information, passing BILL as a parameter denoting the file name, where the debugging information should be outputted, even if normally the user would have no authority to access this file for editing. This is where the property of ambient authority comes into play: the compiler possesses two authorities for different purposes, but trying to open the file BILL and writing the debugging information there will succeed because the subject cannot choose, which of two authorities to use for this action. In a capability based system with no ambient authority this situation would not be possible, as the compiler, trying to open BILL with a capability granted from the invoker will fail and output a corresponding error message, informing the user that he has no rights to edit that file. As we can see, the capability-based and ACL-based security models are pretty far from being equivalent and the capabilities provide a system with many desirable features. Aside from rather theoretical capability-based operating systems, like Hydra [3], Dennis’ and Van Horn’s design [4], Burroughs’ B5000 [5] there are some currently developed research operating systems (Eros [6], Coyotos, Asbestos). Despite how good the design of those systems might be, practical usage of them would be quite problematic, regarding the lack of hardware drivers, software etc. This leads to the idea that modifying an existing operating system and keeping changes in the API as small as possible will allow (re-)using existing applications with minimum efforts needed to make them capability aware. For many reasons, it is clear, that Unix/Linux systems suit best for such a kind of “upgrade”. In the next chapters we will first overview the classical UNIX security system and then discuss its enhancement known as POSIX Capabilities describing why those are not ‘real’ capabilities according to the definition made in this section and giving motivation for further improvement. 27 Practical capabilities for UNIX ITSEC@i1 2011 3 III. UNIX SECURITY SYSTEM The classic UNIX security system is quite simple. All subjects have an integer identifier, called user id (UID) which identifies the user who executes a program. Users may also be members of different groups, which also have their identifiers – group ids (GID). Each resource in the system is a property of exactly one user and belongs to only one group, though one user may be a member in many groups simultaneously. The ACL of each resource contains only three entries, dividing all subjects in three categories: the resource’s owner, the members of the group and all other subjects. There are also only three types of authorities: read access, write access and a right to execute a file. Each file has two additional flags, namely set_uid and set_gid. If the set_uid flag is set, the executed program receives the UID of the file’s owner, the set_gid flag works analogous for GID. This gives a possibility to execute programs on behalf of another user. To access a resource, a subject invokes a system call, then the right is checked by the system according to the ACL, and a file descriptor is returned on success. The file descriptor is an integer number that is indexing the FILE structure allocated in kernel space. The UNIX file descriptor itself has many properties of a capability described in the previous section: Even though it is just an integer, it names a resource and authorizes to use it. The file descriptor also cannot be neither forged nor delegated to other process bypassing system control. However, using UNIX message passing one can send a file descriptor to a subject, which itself would not be authorized to obtain it [13]. For administrative purposes, there is a special user that has an unlimited power in the system, meaning that he can access any resource ignoring limitations defined by the ACLs. This user is called a superuser or root and has UID=0. It is clear, that “normal users” should be able to perform certain actions only in a very restricted way and only in special circumstances, like for instance, some network activities should be restricted, the user should be able to change only his own password or kill only his own processes etc. But the described model is too far from being fine granular enough to give normal users authorities for certain privileged operations on purpose. So the usual way the users perform privileged actions in the system is that they execute programs owned by root that have the set_uid flag set and let this programs do the job. The side effect of this approach is that a program, which should perform certain action, gets not only the right to accomplish its task, but also an unlimited power to manipulate the whole system, which presents exactly the opposite of the least privilege principle described in the previous chapter. Usually such programs do not use all the privilege they get, but in certain cases errors in such programs may cause a lot of harm, including giving to the attacker exploiting such a bug the control over the system [14]. There have been attempts to fix the lack of granularity in the UNIX system’s ACL, allowing an unlimited number of Mykola Protsenko subjects in it [12], but it would not fix the problems described above, since root would still be beyond any control. IV. POSIX CAPABILITIES The idea behind the so called POSIX capabilities [7] is to split the power of root into smaller parts. In particular, each subject has a subset of about 30 different authorities (called POSIX capabilities), each of them allowing to perform a certain privileged operation. Here we present some examples (taken from [16]): - CAP_DAC_OVERRIDE allows to override all DAC rules, i.e. to access any file in the system; - CAP_NET_BIND_SERVICE: allows binding to TCP/UDP sockets below 1024; - CAP_NET_RAW: allow use of RAW and PACKET sockets; - CAP_SYS_BOOT: allows to reboot the system. For the sake of flexibility, each object (process or file) has not only one set of POSIX capabilities, but three of them: the effective, the permitted and the inherited set. As the name says, the effective set is the one, which is used to check the authority to perform a certain action, so the action succeeds, if the corresponding POSIX capability is in the process’s effective set. The permitted set describes, which POSIX capabilities are permitted to be in the object’s effective set, which implies that the later one is always a subset of the first one. The inherited set is used to determine POSIX capabilities a child process gets when it is created. When a program is executing, following rules are applied to determine the three sets of a new process [17]: 1) pI’ = pI 2) pP’ = fP | (fI & pI) 3) pE’ = pP’ & fE Where pI, pP, pE are the parent process’s inherited, permitted and effective sets, fI, fP and fE – inherited, permitted and effective sets of a file that is being executed and pI’, pP’, pE’ – analogous the three sets of a child process. As the first rule says, the inherited set is indeed inherited by the child process without any changes. The child’s permitted set contains all the POSIX capabilities from the file’s permitted set plus those, which are both in the file’s and the parent’s inherited sets (this is where inherited set is used). The new process’s effective set includes all POSIX capabilities from the file’s effective set, unless they are excluded by the child’s permitted set. As we can see, POSIX capabilities sets are restricted by the sets of both the file that is being executed and the parent process. To manipulate its own POSIX capabilities sets, a process can use the cap_set()system call. Of course, not all operations are allowed: one can only remove capabilities from his permitted set and a new capability can be included in the effective or the inherited set only if it is in the permitted set. To delegate POSIX capabilities to other processes, a capability CAP_SETCAP is required. 28 Practical capabilities for UNIX ITSEC@i1 2011 4 To allow execution of legacy programs, which do not support this model, the POSIX capability system provides a so called legacy fixup mode [18], which is also the default operation mode. In this mode programs with root set_uid bits just have all capabilities in their sets emulating in this way the “classic” behavior of the system. For this purpose there is a structure task_struct [19] assigned to each process, which includes several capabilitiesrelevant flags, like: “ - SECURE_NOROOT – enabling this gives no special privileges to uid 0; - SECURE_NO_SETUID_FIXUP – setting this bit disables capability fixes when transitioning from or to uid 0 via setuid. This might be done for compatibility with older programs that use setuid to reduce their privileges; - SECURE_KEEP_CAPS – when set, a process can retain its capabilities even when transitioning to a normal (not uid 0) user. This bit is cleared by exec()” (from [19]). So to leave the legacy fixup mode, a process just needs to set the SECURE_NOROOT and the SECURE_NO_SETUID_FIXUP flags using the prctl() [20] system call. The usage of POSIX capabilities is certainly a step towards the least privilege principle and may improve the security of applications. For some reasons, they have never been widely used in practice, as stated in [19]: “Capabilities are an interesting, but complicated, security feature. For most of the ten years they have been part of the Linux kernel, they have either been broken, ignored, or both.” The other thing is that they are quite different form the capabilities we have defined earlier in this paper. The main difference is that a POSIX capability do not name a resource, on which the possessed authority applies, for instance if a process has CAP_NET_BIND_SERVICE in its effective set, it can bind to any port less then 1024 and so on. So POSIX capabilities do not have important properties that normal capability systems have, like no designation without authority and no ambient authority. This system also does not help preventing the occurrence of a confused deputy pattern. For the same reason, it would not be possible to restrict an application’s access to the users data, in other words a process started by some user will always have access to all his data. It means that this model is not that flexible as true capability systems are. From this point of view, the term “capabilities” used in the corresponding POSIX draft is rather confusing, since it does not match with a security model it describes. V. CAPSICUM As we have seen in previous section, dividing the privilege of root user into a set of distinct authorities does not solve all security problems. The idea of a practical system, which should enhance the UNIX security system with true capabilities was described in [8]. However, to our knowledge, the proposed design was never widely used. Next we will consider an another effort toward the least privilege principle, namely the Capsicum capabilities for UNIX [21]. This open source project has been developed in the Cambridge University for about 3 years, there is a working prototype for FreeBSD 8.x and it is planned for inclusion in FreeBSD 9. Because of the freshness of this technique, there is not much documentation or evaluating research work available, so the one and only source of information about Capsicum is the paper [9] presented at USENIX Security Symposium 2010. In this section we present a brief overview of this work regarding the main principles, the basic implementation ideas and the adoption of legacy applications to use this new approach, however without going as deep in details, as the original paper does. The main idea behind the Capsicum is to bring all advantages of the capability based security into UNIX without making too big changes in the system’s API to make it possible to reuse as much existing code as it gets and to make writing/rewriting applications for it easy as well. For this matter, the Capsicum does not aim to replace the existing UNIX security system and is rather to be considered as an enhancement or an addition to it, which allows to use the benefits of the capability based security for critical Fig. 2. Structure struct capability. Mykola Protsenko 29 Practical capabilities for UNIX ITSEC@i1 2011 5 Fig. 3. Simple application using Capsicum. applications or parts of code. The technique, where critical code is executed with restricted rights in a separated environment, is called sandboxing [23]. To achieve this ambitious goal, authors have exploited the fact, that UNIX file descriptors already possess a large part of properties that a capability must have (see chapter 3). According to [9], they have only few things that should have been fixed, for instance if a file descriptor allows only read access to a file, it also permits changing of a so called metadata (the access rights for owner, group and others, i.e. the contents of the ACL) using the chmod() system call. So the solution was found by overwriting (wrapping) the existing struct FILE with a new structure struct capability, which includes also a set of authorities. The new capabilities and old-fashion file descriptors may coexist in one process (see fig. 2 taken from [9]). To enter a so called capability mode, where old file descriptors are no longer allowed, the process executes the cap_enter() system call. This system call sets a special per process capability mode flag. Once entered, neither the process itself, nor any of its successors can leave this mode. Unfortunately, changing a file descriptor is not enough to reach all security goals. After a process has entered a capability mode, its access to system resources must be restricted by his set of capabilities. Same as in true capability based systems, there are only two ways the process can obtain an authority to access something: either by inheriting it from its parent or by having it granted form an other process. In other words, capabilities are the only way of designation of resources in the capability mode. This is achieved by restricting the process’s access to system namespaces by blocking/filtering critical system calls, like open() (note, that in this context the word “namespace” denotes not only the file system’s one, but also many others that are present in UNIX system, like the one defined by processes IDs or network protocols/interfaces). This goal is reached by some kernel changes and a libcapsicum – the “library interface to capability-mode services” [24], which presents the runtime environment of the Capsicum capability mode. This model defines the use cases of the Capsicum system or how the applications should deal with it. The most basic Mykola Protsenko scenario goes as follows: the application starts in a noncapability mode and allocates all the resources needed for its computation. Then corresponding file descriptors are converted to Capsicum capabilities, restricting the rights to those that are minimum and sufficient for the application to perform its task. Those actions can be done in a really small amount of code what makes it possible to keep it bug-less and reliable. To perform the computation itself, which on the opposite may contain quite large pieces of code, undebugged and unreliable, new processes are spawned that inherit all needed capabilities and then immediately enter the capability mode. After that, they can only access the resources referenced by these capabilities and can not cause much harm to the system, even if the executed code were buggy, malicious, exploited or all together. (See fig. 3 from [21]). Of course, not all applications match this simple scheme, especially interactive applications that have to communicate with the user (See fig. 4 from [21]). In this situation processes, which have already entered the capability mode, will have to communicate with those outside of this mode, and maybe sometimes receive new capabilities from them. The very import part of the modification of applications to use the Capsicum is do determine the resource dependencies, because it is not always clear, which resources are needed by the computation that should be sandboxed. To do that both static and dynamic analysis must be used. Now if we remind us on the confused deputy problem, discussed in the second chapter, and consider the two above described application patterns, we would see that this problem is not directly prevented by the Capsicum capabilities. The main problem we see here, is that all resources are allocated in the environment with ambient authority, which makes it indeed possible, that a deputy, organized in such way, will confuse authorities. So if the compiler, presented as example of a confused deputy in [11], would be programmed as described above, the danger would be still present. To solve this problem, we would need capabilities as the only way of granting authorities on a system-wide basis, which is currently not a feature of the Capsicum. 30 Practical capabilities for UNIX ITSEC@i1 2011 6 Fig. 3. Interactive application using Capsicum VI. CONCLUSION The Capsicum capabilities, compared with the so called POSIX capabilities, present a much better approach to solution of security problems that UNIX software usually has. Those problems have arisen mostly because of the misuse of root set_uid utilities and a lack of flexibility of the system’s security model itself. On the other hand, the Capsicum should rather be seen as a capability based sandboxing technique than a true capability system since it still relies on ‘classical’ protection mechanisms as a DAC in form of simple-minded ACLs. Even though the Capsicum provides sandboxed processes with an environment with no ambient authority and no designation without authority, the way the most Capsicumaware applications might be implemented does not necessarily eliminate the problem of a confused deputy. Despite this fact, the Capsicum sure does move the system development into a right direction. [15] United States Department of Defense. December 1985. DoD Standard 5200.28-STD http://www.fas.org/irp/nsa/rainbow/std001.htm [16] List of POSIX capabilities http://www.gentoo.org/proj/en/hardened/ capabilities.xml#doc_chap4 [17] Linux kernel capabilities FAQ. http://ftp.kernel.org/pub/linux/libs /security/linux-privs/kernel-2.4/capfaq-0.2.txt [18] Serge E. Hallyn, Andrew G. Morgan. Linux Capabilities: making them work. [19] Jake Edge Restricting root with per-process securebits, http://lwn.net/Articles/280279/ [20] http://www.kernel.org/doc/man-pages/online/pages/man2/prctl.2.html [21] The Capsicum project http://www.cl.cam.ac.uk/research/security /capsicum/ [22] Robert Watson’s talk on USENIX: http://www.youtube.com/ watch?v=raNx9L4VH2k [23] Amit Singh. A Taste of Computer Security. http://www.kernelthread.com/publications/security/sandboxing.html [24] libcapsicum man page, http://www.cl.cam.ac.uk/research/security/ capsicum/man/libcapsicum.3.pdf REFERENCES [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] B. Lampson. Protection. Proceedings of the 5th Annual Princeton Conference on Information Sciences and Systems, 1971, p. 437–443. Mark S. Miller, Ka-Ping Yee, Jonathan Shapiro. Capability Myths Demolished, Technical Report SRL2003-02, Systems Research Laboratory, Johns Hopkins University. Henry M. Levy. Capability-based Computer Systems. Digital P.,U.S., December 1984. Jack B. Dennis and Earl C. Van Horn. Programming semantics for multiprogrammed computations. Commun. ACM, 26(1):29–35, 1983. Burroughs. Definition of the B5000 Information Processing System. Technical report, Burroughs Corporation, 1961. Jonathan S. Shapiro, Jonathan M. Smith, and David J. Farber. EROS: a fast capability system. SIGOPS Oper. Syst. Rev., 33(5):170–185, 1999. The last POSIX.1e draft describing capabilities: http://www.gsp.com/cgi-bin/man.cgi?section=3&topic=posix1e Adam Langley. A Practical UNIX Capability System. 22nd June 2005 Robert N. M. Watson, Jonathan Anderson, Ben Laurie, Kris Kennaway. Capsicum: practical capabilities for UNIX. Proceedings of the 19th USENIX Security Symposium, 2010. J. H. Saltzer, M. D. Schroeder. The Protection of Information in Computer Systems. Proceedings of the IEEE 63(9), September 1975, p. 1278–1308. N. Hardy. The Confused Deputy (or why capabilities might have been invented). Operating Systems Review 22(4), October 1988, p. 36–38. Andreas Grünbacher. POSIX Access Control Lists on Linux. SuSE Labs http://archives.neohapsis.com/archives/postfix/2000-09/1476.html CERT® Advisory CA-2003-25 Buffer Overflow in Sendmail http://www.cert.org/advisories/CA-2003-25.html Mykola Protsenko 31 An MD5 collision based attack on the SSL key infrastructure ITSEC@i1 2011 1 An MD5 collision based attack on the SSL key infrastructure Julian Hammer Friedrich-Alexander-University Erlangen Abstract—This is a documentation of an attack on the X.509 Public Key Infrastructure (PKI) made possible by the use of the insecure MD5 hashing function in a commercial Certification Authority (CA). By combining MD5 collision techniques and a timing attack it was possible to forge a signature of a rogue CA through a standard website certificate. The PKI is used to authenticate Secure Socket Layer (SSL) connections to websites or other internet services and its insecurity poses a significant— not just theoretical—threat for all internet users. I. I NTRODUCTION The Secure Socket Layer (SSL) is used to encrypt and authenticate access to domain based internet services, such as websites or mail servers. The encryption restricts anyone but the recipient from reading the content of the transferred data. The recipient has to be authenticated, so that no one else can masquerade as the intended recipient. This is done using a hashing function and X.509 certificates, authenticating the domain owner by a trusted certification authority. If the authentication can be attacked, attackers could impersonate themselves as any website, also known as man-in-the-middle and phishing attacks. Most users and even specialists would not be able to notice the attack and willingly give them sensitive data. The goal of an attacker would be to become a trusted certification authority. In this way arbitrary rogue certificates could be issued, as no restrictions apply for certification authorities. The Message-Digest algorithm 5 (MD5) was designed by Ron Rivest in 1992 as a secure replacement for MD4 [1]. Its purpose is to provide a practical, preimage resistant, second preimage resistant and collision resistant hash function. Some weaknesses were discovered in 1993 by Den Boer and Antoon Bosselaers [2] and in 1996 by Hans Dobbertin [3]. But no collisions were found until 2004, when Xiaoyun Wang and Hongbo Yu presented a method, reducing the time to compute a collision to one hour on a—at that time—high-end computer cluster, at EuroCrypt [4]. Further improvements were done reducing the complexity from initially 264 to 221 , thus taking less than a minute on a notebook to generate MD5 collisions [5]. All the attacks on the security of MD5 could not be transferred to the X.509 Public Key Infrastructure (PKI) so far. In 2007, Stevens showed in his Master’s Thesis [6] that a chosenprefix collision can be constructed with the result that the This paper was written as part of the conference-simulation-seminar “Seminar IT-Sicherheit” which was organized by the chair for IT Security Infrastructures at the University of Erlangen-Nuremberg during winter term 2010. Julian Hammer signature of one certificate also validates another—different— certificate. The practical application was considered difficult, for lack of control over the to-be-signed part generated and signed by the CA. It was suggested that MD5 should no longer be used, and measures against chosen-prefix collisions should be taken by ensuring that the to-be-signed part generated by the CA could not be predicted by a possible attacker. Most CAs switched to SHA1, but by January 2009, 14% of all certificated analyzed by NetCraft were still signed with the help of the MD5 hashfunction [7]. The X.509 PKI is organized in a way that allows an attacker to attack any trusted CA and receive full trust by anyone trusting the CA. This means that the attacker can choose the weakest link without any drawback. Thus the attack scheme was already lined out and the practical obstacles had to be overcome: Predicting the to-besigned part generated by the CA with enough lead time to compute a certificate and to-be-signed part with the same MD5 check-sum as the predicted to-be-signed part. The computed to-be-signed had to be valid X.509, without certain limitations normally imposed by signing CA. In the preliminaries MD5 and X.509 will be explained, as well as attack methods on MD5. After these basics the attack will be outlined in further detail and each step explained in the chronological order it took place. The “author” did not do the research work, but merely wrote this summary, thus takes no credit of the work done. The real researchers and authors are Alexander Sotirov, Marc Stevens, Jacob Appelbaum, Arjen Lenstra, David Molnar, Dag Arne Osvik and Benne de Weger [8]. II. P RELIMINARIES A. Hashing function terminology and requirements A hash function takes any input data (as a bit string) and returns a “fingerprint”, called hash, with a fixed length of k bits. For the same input data the returned hash is always the same. The hash function H takes the bit string m as input and returns the hash h. h = H(m) This function should fulfill the following requirements: • practicality Hash h of any bit string m can be computed efficiently • preimage resistant If a hash h is given, it is hard to compute a bit string m, such that h = H(m). m is called the preimage of h. 32 An MD5 collision based attack on the SSL key infrastructure ITSEC@i1 2011 2 input 1 second preimage resistant If a bit string m is given, it is hard to compute a second bit string m′ , such that m 6= m′ but H(m) = H(m′ ). • collision resistant It is hard to compute two bit strings m and m′ , such that m 6= m′ and H(m) = H(m′ ). To brute force a hash function that returns hashes with the length of k bits is expected to take 2k hash computations to find a second preimage and 2k/2 computations for a collision, due to the birthday-paradox. A hash function is “cryptographically strong” if no better method for finding collisions is known than brute force and 2k/2 computations are too expensive to calculate. Mi ||Mj will be used to represents the concatenation of blocks Mi and Mj . • B. MD5 MD5 is a hashing algorithm based on the Merkle-Damgård iterative construction [1]. The input data is padded to a multiple of 512 bits and then split into blocks of 512 bits. These “input blocks” shall be called M1 , M2 , ... Mn . The function f is a one-way compression function which takes an intermediate hash value (IHV) and an “input block” as input, and returns the next IHV. An IHV has a constant length of 128 bits and shall be called IHV0 , IHV1 , ... IHVn . See Figure 1 for illustration. IHV0 f M1 f M2 f M3 IHV1 IHV2 IHV3 f M4 padding Hash Fig. 1. Structure of MD5 The first IHV (IHV0 ) is a constant value, defined by RFC 1321 [1]. The last IHV (IHVn ) is the hash of the input data. Hereafter H(...) will be referred to MD5(...) for clarity. C. Weaknesses in MD5 1) Collision: The structure of MD5 implies that if one or more collision blocks can be constructed, they can be inserted around data and produce a valid collision. The only restriction is that the prefix has to be a multiple of 512 bits long. See Figure 2 for illustration. This was presented by Xiaoyun Wang and Hongbo Yu at EuroCrypt 2005 [4] with two 512 bit blocks M1 , M2 and M1′ , M2′ with MD5(M1 ||M2 ) = MD5(M1′ ||M2′ ) Julian Hammer P input 2 = P IHVi C 6= C’ IHVi+k S = S MD5(P ||C||S) = MD5(P ||C ′ ||S) Fig. 2. MD5 Collision [9] 2) Chosen-Prefix Collision: The collision shown above is very restricting in applicability, as the pre- and suffix have to be the same for both inputs. Marc Stevens presented a method called “chosen-prefix collision” in his master thesis [6]. The method allows to construct a collision for any pair of prefixes, such that MD5(P ||C||S) = MD5(P ′ ||C ′ ||S). First P and P ′ may not have the same size, they have to be padded with A and A′ , which may have any content. Then B and B ′ are computed using a “birthdaying” 1 step to prepare the IHV for the set of “near collision blocks”, N C and N C ′ . See Figure 3 for illustration. D. X.509 PKI X.509 is an ITU-T standard for, amongst other things, public key infrastructures [11]. It defines the function of Certification Authorities (CA), how they sign certificates and CAs, creating a trust tree. A version 3 certificate contains the following: • “to-be-signed” part – Version – Serial Number (has to be unique for every certificate issued by a CA) – Algorithm ID – Issuer (Information about the CA issuing the certificate) – Validity period (Not Before and Not After) – Subject (Information about the subject of the certificate, especially the common name of the domain or organization it was issued to) – Subject Public Key Info (Algorithm and Public Key of the key pair to be signed) 1 A “birthday attack” is a way of efficiently finding collisions, through exploitation of the birthday problem. In this case collisions were not searched for, but IHVs with a special (small) difference. 33 An MD5 collision based attack on the SSL key infrastructure ITSEC@i1 2011 3 input 1 input 2 P 6= P’ A||B 6= A’||B’ IHVi NC 6= 6= IHVi′ NC’ RapidSSL http://www.rapidssl.com/ FreeSSL http://www.freessl.com/ • TC TrustCenter AG http://www.trustcenter.de/ • RSA Data Security https://www.verisign.com/repository/root.html#rsass • Thawte http://www.thawte.com/ • verisign.co.jp http://www.verisign.co.jp/ All of them are trusted by Firefox and use MD5, against recommendations, since collisions were already presented in 2004. RapidSSL issues more certificates then any of the other CAs, as a study revealed [12]. • • IHVi+k S = S MD5(P ||A||B||N C||S) = MD5(P ′ ||A′ ||B ′ ||N C ′ ||S) Fig. 3. MD5 Chosen-Prefix collision [10] – Extensions (optional, e.g. restrictions for which the key may be used, especially “CA = FALSE” forbids the key holder to issue valid certificates himself) • Signature Algorithm ID (e.g. “MD5 with RSA”) • Signature To obtain a certificate by a CA one has to issue a Certificate Signing Request (CSR), which contains information for the CA to use in “Subject” and “Subject Public Key Info” entries in the certificate. The CSR has to be signed by the subject private key to ensure that the requester holds the private and public key. Common practice is that the CAs handle the information from CSRs very conservatively and only use checked information, thus the requester has little control over the certificate’s content issued by the CA. The trust is given by the user trusting the CA and all its signed intermediate CAs and certificates. All modern browsers come with a list of trusted CAs, which the browser developers consider “secure”. For requirements a CA has to fulfill, see http://www.mozilla.org/projects/security/certs/policy/ for Mozilla’s policy. III. C ONSTRUCTION OF A ROGUE CA A CA has to meet some requirements, in order to be attacked using the chosen-prefix collision: • Predictability of the issued certificate (of every bit, so the MD5 hash can be predicted before the certificate is being issued), especially: – Serial number – Validation period • Using MD5 for the signature • Accepted by all standard browsers A. Possible Targets In 2008, a search for such a “weak CA” brought up six CAs still signing with MD5: Julian Hammer B. Prediction and Timing Further investigation into the RapidSSL CA and certification issuance practice showed that the serial numbers of certificates are given out in sequential order and the increment per weekend is between 800 and 1000. A weekend was chosen, because it is a bit less than the estimated time to construct a collision and the load on the CA will be less. See figure 4. The higher increment on one weekend in September is due to 100 certificates being bought for investigative purposes. It is also necessary to predict the exact time the certificate is being issued, thus the exact validity period. The certificates are issued exactly 6 seconds after finalizing the purchase, so the certificate is valid from the time the user buys the certificate + 6 seconds and valid for exactly one year. C. Attack scheme The attack scheme was as follows: • Buy one certificate on Thursday night to get the current serial number, referred to as S • Sunday night is referred to as time T • The predicted serial number is S + 1000, which is higher then it would normally be on Sunday night • Some hours before time T , certificates are slowly purchased, to push up the serial number near S + 1000, without raising suspicions • 30 seconds before time T , the last certificates are bought to bring the serial number up to S + 999 • Hopefully at T − 6s the predicted certificate can be bought with the predicted serial number S + 1000 and the computed collision blocks. If this wasn’t possible the entire attack had to be abandoned D. The Certificate Construction As explained in section II-D, one has little control over the certificate issued by the CA. The whole content can be predicted, but only the following can be freely adjusted: • subject country • subject organization • subject common name • subject public key (algorithm, modulus and public exponent) The “near collision blocks” from the chosen-prefix collision, as described in section II-C2, fit into the public key modulus 34 An MD5 collision based attack on the SSL key infrastructure ITSEC@i1 2011 4 Fig. 4. RapidSSL’s serial number increment per weekend [13] TABLE I R EAL CERTIFICATE ’ S “ TO - BE - SIGNED ” PART AS ISSUED BY R APID SSL bytes 0-3 4-8 9-13 14-28 29-120 description header version number serial number signature algorithm issuer 121-152 153-440 validity subject 441-734 subject public key info 735-926 extensions content 3 643015 (as predicted) “md5withRSAEncryption” country = “US” organization = “Equifax Secure Inc.” common name = “Equifax Secure Global eBuisiness CA-1” from 3 Nov. 2008 7:52:02 to 4 Nov. 2009 7:52:02 (as predicted) country = “US” organization = “i.broke.the.internet.and.all.i.got.was.this.t-shirt.phreedom.org” organizational unit (3 fields) common name = “i.broke.the.internet.and.all.i.got.was.this.t-shirt.phreedom.org” header, public key algorithm, another header, RSA modulus (2048 bit) and public exponent headers, key usage, ..., basic constraint (CA = FALSE) of the real certificate and need to have corresponding blocks at the same position in the forged certificate. The forged certificate’s bits can be freely chosen to the point where the “birthday bits” and “near collision blocks” in the real certificate start, after which forged and real certificate have to have the same content. With the certificate described in Table I and the alignment required by MD5, three “near collision blocks” can be inserted into the public key starting from byte 512 to byte 704. Thus everything from byte 704 onward has to be identical in both certificates. The “Netscape comment” extension gives the possibility to hide arbitrary data within a certificate. By standard, it has to be in IA5String format, but this is normally not checked, so that it can serve to hide any bit string of any length. Beginning with the “Netscape comment” extension at byte 500 there is complete freedom of the content in the forged Julian Hammer certificate. This overlaps almost completely with the public key modulus from the real certificate: the first 26 bytes of the public key modulus in the real certificate can be chosen randomly (they do not overlap), then 12 bytes can be used to insert “birthday bits” (called B and B’ in section II-C2), 3 ∗ 64 bytes for the “near collision blocks” and that leaves 26 bytes to choose freely to make the modulus valid and usable. The number of birthday bits and “near collision blocks” are a trade-off problem described in [6] and with improvements in [14]. See Figure 5 on page 7 for exact comparison of the real and forged certificates. 1) Birthday Bits: The “birthday bits” are used to search for a pair of intermediate hash values (IHVs) produced by the real and forged certificates, which are suitable for the “near collision blocks”. These IHVs have less differences then IHVs 35 An MD5 collision based attack on the SSL key infrastructure ITSEC@i1 2011 5 TABLE II F ORGED CERTIFICATE ’ S “ TO - BE - SIGNED ” PART AS bytes 0-3 4-8 9-11 12-26 27-118 description header version number serial number signature algorithm issuer 119-150 153-212 validity subject 213-374 subject public key info 375-926 extensions content 3 65 “md5withRSAEncryption” country = “US” organization = “Equifax Secure Inc.” common name = “Equifax Secure Global eBuisiness CA-1” from 31 Jul. 2004 0:00:00 to 2 Sep. 2004 0:00:00 (in the past) common name = MD5 Collision Inc. (http://www.phreedom.org/md5)” header, public key algorithm, another header, RSA modulus (1024 bit) and public exponent headers, key usage, basic constraint (CA = TRUE, Path Length = None) subject key identifier, authority key identifier and Netscape comment extension of arbitrary prefixes would normally have. The search for the “birthday bits” is called “birthdaying” and is done by inserting random bit patterns in both the real and the forged certificate. Each resulting IHV and pattern is saved and all computed IHVs of the real and the forged certificate are compared. Then the two bit patterns producing the least differences between their resulting IHVs are chosen. This attack exploits the birthday-paradox to reduce the number of “near collision blocks”. The attack was done with 72 “birthday bits”, leaving 3 bytes of the public key modulus unused, which were arbitrarily set to zero. The “birthday bits” pair is completely different for both certificates and appears random. See table III and figure 6 for illustration of IHV differences. In the figure, each row represents the IHV state after one block, each “pixel” represents the difference of one bit, with black being no difference. 2) Near Collision Blocks: The prepared IHVs simplify and reduce the number of “near collision blocks”, as less difference has to be eliminated. The computation of the “near collision blocks” (NCB) is rather complicated and will not be explained here. The following should be considered given: • Each NCB eliminates differences between the IHVs of both certificates • NCBs of both certificates vary only in one or two bits Three blocks were enough to reduce the difference to zero and produce a collision, this is due to the expensive “birthdaying” step. A detailed explanation of the algorithm used can be found in the original paper [8]. See table III and figure 6 for illustration of IHV differences. Fig. 6. Differences of IHVs between real and forged certificate [16] 3) Valid and Usable RSA Modulus: In the 2048 bit of the public key modulus, in the real certificate, 72 + 3 ∗ 512bits = 1608bits have to be inserted (see above). The modulus must be valid, thus be a product of two primes, and usable, thus the Julian Hammer CONSTRUCTED two primes q and p have to be known. This is necessary due to the fact that the certificate signing request (CSR) needs to be signed using the private key that corresponds to the modulus. To make the predefined bit string (26 random bytes, 12 “birthday bytes” and 3 ∗ 64 “near collision block” bytes) B with the free-to-choose 26 byte suffix S valid and usable, the following was done: With N = B|| “208 one bits” 1) Choose random 224 bit integer p 2) Check if N mod p < 2208 or start over 3) Check if p and q = ⌊ Np ⌋ are primes or start over 4) Check if (p − 1)(q − 1) and the public exponent 65537 are coprimes or start over 5) n = pq is a valid modulus, containing the predefined bit string and p and q are known E. Realization of the Attack The most compute and time intensive part is the computation of the “birthday bits”. This problem is very well suited for parallelization in a cluster, especially with cell processors as used in PlayStation 3s. This was made possible at the “PlayStation Lab” of the Arjen Lenstra’s Laboratory for Cryptologic Algorithms at EPFL, Lausanne, Switzerland. They provided a cluster of 215 PS3s, which completed the “birthday bits” calculation within 18 hours. The computation of the three “near collision blocks” was done on a high-end quad core computer, taking 3 to 10 hours. The “birthday bits” and “near collision blocks” calculation needed only 28 hours in total. As it was done in two stages on different hardware, three attempts could be done in parallel within 64 hours, thus on one weekend. It took the researchers four weekends until the timing and serial number prediction finally worked out and a forged certificate was created. For their research they spent a total of 657 USD on certificates by RapidSSL. IV. C ONCLUSION , I MPACT AND P REVENTION Not all of the certification authorities switched to better hash functions, even long after MD5 was considered insecure by cryptologists and security researchers. Their certificates are the only security there is for most internet users from being victims to scams and phishing and the like. By the 36 An MD5 collision based attack on the SSL key infrastructure ITSEC@i1 2011 6 TABLE III I NTERMEDIATE H ASH VALUES IHV IHV0 IHV1 IHV2 IHV3 IHV4 IHV5 IHV6 IHV7 IHV8 IHV9 IHV10 IHV11 IHV12 IHV13 IHV14 IHV15 real certificate 0123456789ABCDEFFEDCBA9876543210 058484A77F07A36382AAECF2DFE207A2 D52743425C3DAC23A9E62C6C9670622E 7789E58E3B45621A3E46A64CA9D7AC3A CDA2CB5673D3D32092C7F1EF80CE5729 F08E24604482508B959A0B5762207A3F A83EA6CCCC50B41A4BFADBC6D856B338 0B42EAAB4258AACA8C30BDB8192A1BC0 D21CED8CC56726B6BF2AE4A93D742C3A DC1EDBFFF3C3E9E7BCEB3F9E2D0705BD F0D655805A71A74EF8A6A630D11977D8 9808B5471E7130CC5A30A2ABF2BE4B4D AA1F57B21A8732130CB0CAEF4BB9C746 151754FA2FCC5914E72B71B4300B6485 271EECDC4DAC9E9C471C34C833917E26 9ED7B966BD815C141B899DC64B528564 6= 6 = 6 = 6 = 6 = 6 = 6 = 6 = ≈ ≈ ≈ = = = = = forged certificate 0123456789ABCDEFFEDCBA9876543210 713F764E78B5C9B03F8878F7A440551B 2AC9681DDB3B72D29A1422A515C9E4F4 104DD09F9F651E554C528578AC1F6885 15ADC95447929A2AC0EACF9E618E14EB D6D6E59C0BDB1F701CB04C29A0573EA0 3AAB0CE98F1E9B2AC270A5A2C60FF605 DE3CCC11526732CA0FD8B9F5992A7673 D21CED8CCE3D7EB4C82ADCA94674243A DC1EDBFFF49941E8BDEB379E2E07FDBC F0D655805A479F4EF8A69E30D1196FD8 9808B5471E7130CC5A30A2ABF2BE4B4D AA1F57B21A8732130CB0CAEF4BB9C746 151754FA2FCC5914E72B71B4300B6485 271EECDC4DAC9E9C471C34C833917E26 9ED7B966BD815C141B899DC64B528564 creation of the forged certificate and with that a forged certification authority, any attacker could impose themselves as any website or server and would be considered authentic. The attacker would need knowledge of cryptography and access to a computer cluster. Most victims would not be able to spot any irregularities with the given certificate, even after close inspection. The created—forged—certification authority was deliberately already expired on its creation date, so as to show only the possibilities without doing any damage. It can be inspected at https://i.broke.the.internet.and.all.i.got.was. this.t-shirt.phreedom.org/ and will be considered valid, as long as the system date is set back to August 2004. If the real certification authority, namely RapidSSL, would have paid more attention to security rather than to ease of operation, it would have been harder or almost impossible to exploit the weak hash function: • Randomization of the serial numbers This requires the CA to store all serial numbers ever generated by it, because they have to be unique • Randomized “valid period” fields The certificate was always signed 6 seconds after its submission and valid for exactly one year. This could be randomized, making it harder to predict. • The “pathlength” parameter of the issuing CA could be set to zero Then only “end-user” certificates can be issued, as a forged CA would be detectable by the victim. Despite all prevention possibilities: an insecure hash function has to be replaced by a secure one, at the latest when the first collision exists. For example MD5 was not recommended by the Bundesnetzagentur (Federal Network Agency of Germany) in 1999, as it’s long term security was not given [17]. Verisign—owner of RapidSSL—responded to the attack and announced, one day after publication of the attack, that they have ceased using MD5 [18]. They would also replace any certificate using MD5 free of charge. Several organizations (Mozilla, Microsoft, Cisco, US-CERT and others) published security advisories disapproving of the use of MD5. The Secure Hash Algorithm 1 (SHA-1) [19] is based on the same Merkle-Damgård structure as MD5, but collisions have Julian Hammer comment constant to MD5 after after after after “birthday bits” “near collision block” 1 “near collision block” 2 “near collision block” 3 MD5 hash not yet been published. Neither for SHA-2, also based on the same structure, but theoretical insecurities for both, SHA-1 and SHA-2, have been published. The US National Institute of Standards and Technology is currently searching for a replacement, to be called SHA-3, which will be announced in 2012. R EFERENCES [1] R. Rivest, “The md5 message-digest algorithm,” RFC 1321 (Informational), April 1992. [2] B. den Boer and A. Bosselaers, Collisions for the Compression Function of MD5. Berlin; London: Springer, 1993. [3] H. Dobbertin and H. Dobbertin, “The status of md5 after a recent attack,” RSA Laboratories CryptoBytes, vol. 2, no. 2, p. 1, 1996. [4] X. Wang and H. Yu, “How to break md5 and other hash functions; eurocrypt,” 2005. [5] V. Klima, “Tunnels in hash functions: Md5 collisions within a minute,” 2006, cryptology ePrint Archive, Report 2006/105. [6] M. Stevens, On Collisions for MD5, 2007. [7] (2009, January). [Online]. Available: https://ssl.netcraft.com/ ssl-sample-report/ [8] M. Stevens, A. Sotirov, J. Appelbaum, A. Lenstra, D. Molnar, D. A. Osvik, and B. de Weger, Short chosen-prefix collisions for MD5 and the creation of a rogue CA certificate. Springer, 2009. [9] A. Sotirov, M. Stevens, J. Appelbaum, A. Lenstra, D. Molnar, D. A. Osvik, and B. de Weger, “collision.” [Online]. Available: http://www. win.tue.nl/hashclash/rogue-ca/images/identIV.png [10] ——, “chosen-prefix collision.” [Online]. Available: http://www.win. tue.nl/hashclash/rogue-ca/images/diffIV.png [11] D. Cooper, S. Santesson, S. Farrell, S. Boeyen, R. Housley, and W. Polk, “Internet x.509 public key infrastructure certificate and certificate revocation list (crl) profile,” RFC 5280 (Proposed Standard), May 2008. [12] (2008, December). [Online]. Available: http://www.win.tue.nl/hashclash/ rogue-ca/ [13] A. Sotirov, M. Stevens, J. Appelbaum, A. Lenstra, D. Molnar, D. A. Osvik, and B. de Weger, “increment per week.” [Online]. Available: http://www.win.tue.nl/hashclash/rogue-ca/images/rapidssl-weekend.png [14] M. Stevens, A. Lenstra, and B. de Weger, Chosen-prefix Collisions for MD5 and Applications, 2009. [15] A. Sotirov, M. Stevens, J. Appelbaum, A. Lenstra, D. Molnar, D. A. Osvik, and B. de Weger, “Md5 collision certificate alignment.” [Online]. Available: http://www.win.tue.nl/hashclash/ rogue-ca/downloads/alignment.pdf [16] ——, “Differences in the md5 ihv.” [Online]. Available: http://www. win.tue.nl/hashclash/rogue-ca/images/diff.png [17] Geeignete Kryptoalgorithmen gemäß § 17 (2) SigV. Bundesnetzagentur, 1999, vol. 213. [18] T. Callan, “This morning’s md5 attack - resolved.” [Online]. Available: https://blogs.verisign.com/ssl-blog/2008/12/on md5 vulnerabilities and mit.php [19] P. J. D. Eastlake, “Us secure hash algorithm 1 (sha1),” RFC 3174 (Informational), September 2001. 37 An MD5 collision based attack on the SSL key infrastructure ITSEC@i1 2011 7 Fig. 5. Alignment of real and forged certificate [15] Julian Hammer 38