Malicious Java Applets und ActiveX Erstellt am 20. Februar 2003 Von: Ren´e Herrmann <[email protected]> Betreuer: Prof. Dr. J.-M. Piveteau Diese Arbeit wurde an der Hochschule Rapperswil, Abteilung Informatik geschrie- ben. HSR(cid:13) HOCHSCHULE F(cid:220)R TECHNIK (cid:13) RAPPERSWIL http://www.hsr.ch Das Dokument und dessen Inhalt ist Eigentum der Hochschule Rapperswil, Schweiz. (cid:13)c2003 Hochschule Rapperswil Typeset by LATEX DieindiesemDokumentverwendetenSoft-undHardwarebezeichnungenundMarkennamen der jeweiligen Firmen unterliegen zum Teil warenzeichen-, marken- oder patentrechtlichem Schutz. Zusammenfassung In den vergangenen Jahren sind viele Diskussionen u¨ber die Sicherheitsrisiken von ausfu¨hrbaremInhaltvonWeb-Seitenz.B.JavaAppletsundActiveXControlsgefu¨hrt worden. W¨ahrend vor allem die Entwickler solcher Technologien (z.B. Sun, Micro- soft) die Benutzer u¨berzeugen wollen, daß solche Techniken sicher angewendet wer- den k¨onnen, sind viele Benutzer und Organisationen sehr skeptisch und vorsichtig im Umgang mit solchen Technologien. Dieser Beitrag wird an den Beispielen Java und ActiveX die Risiken solcher Technologien aufzeigen. Das Schwergewicht wird dabei auf Java gelegt. Nach einer allgemeinen Besprechung der Problematik wird ei- ne U¨bersicht der verwendeten Sicherheitskonzepte und deren Realisierung erl¨autert. Anschliessend werden Schwachstellen aufgezeigt, die auf Probleme des Sicherheits- konzeptes aufmerksam machen sollen. Inhaltsverzeichnis Zusammenfassung iii 1 Einleitung 2 1.1 Zweck . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2 Gu¨ltigkeitsbereich . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3 Struktur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.4 Begriffe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2 Malicious Mobile Code 4 2.1 Gefahrenszenarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.2 M¨oglichkeiten in Java . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.3 M¨oglichkeiten in Active X . . . . . . . . . . . . . . . . . . . . . . . . 8 3 Java Sicherheitsprinzipien 9 3.1 Sicherheitsmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.2 Massnahmen gegen Malicious Code . . . . . . . . . . . . . . . . . . . 10 3.3 Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 4 Java Exploited 15 4.1 Manipulation einer Class-Datei . . . . . . . . . . . . . . . . . . . . . 15 4.2 Komplexit¨at der sicherheitskritischen Teile . . . . . . . . . . . . . . . 16 4.3 Keine eindeutige Relation zwischen Bytecode und Java Code . . . . 17 4.4 Verteiltes Modell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 4.5 A¨rgerliche Java Programme . . . . . . . . . . . . . . . . . . . . . . . 17 5 ActiveX 18 5.1 Sicherheitsprinzipien . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 5.2 Problemzonen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 5.3 Bekannte Attacken . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 INHALTSVERZEICHNIS 6 Schlussfolgerung 22 6.1 Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 6.2 Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 A ActiveX Exploit 23 B Abku¨rzungsverzeichnis 25 Literaturverzeichnis 26 1 Kapitel 1 Einleitung Beim Aufruf einer Webseite im Internet gelangen Informationen von einem fremden System direkt auf den eigenen Computer. Dabei handelt es sich nicht nur um Texte undBildersondernh¨aufigauchumausfu¨hrbarenProgrammcode.DieserProgramm- codewirdaufdemheimischenComputervomBrowserodereinemautomatischgest- artetenProgramminterpretiertodererbefindetsichbereitsincompiliertemZustand und wird direkt durch die CPU ausgefu¨hrt. Oft geschieht dies, ohne dass ein Inter- agieren des Benutzers n¨otig ist, geschweige denn der Benutzer davon in Kenntnis gesetzt wird. Java Applets und ActiveX Komponenten sind Elemente im Internet, diedieseM¨achtigkeitdesselbstausfu¨hrbarenProgrammcodesinsichtragen.DieGe- fahren die von Java Applets und ActiveX Komponenten ausgehen k¨onnen liegen in der automatischen Ausfu¨hrung und dem Umstand, dass diese Information von einer beliebigen auch nicht vertrauenswu¨rdigen Quelle im Internet stammen kann. Aus diesem Grund mu¨ssen fu¨r solche Komponenten spezielle Sicherheitsvorkehrungen getroffen werden. 1.1 Zweck DievorliegendeArbeitgibteinenEinblickindieMachbarkeit,wieauchdiem¨oglichen Auswirkungenvonb¨osartigenJavaAppletsundActiveXKomponenten.Sieerm¨oglicht einem Internetbenutzer die Risiken, die von solchen Programmen ausgehen ein- zusch¨atzen. Die Erl¨auterung der vorhandenen Sicherheitsvorkehrungen sollen ihm die Konfiguration seines Systems erleichtern. 1.2 Gu¨ltigkeitsbereich In der vorliegenden Arbeit liegt das Schwergewicht in folgenden Bereichen: • B¨osartige Java Applets (auch Malicious Java Applets genannt) Kapitel 1: Einleitung • B¨osartige ActiveX Komponenten (auch Malicious ActiveX genannt) • Sicherheitsvorkehrungen gegen b¨osartigen Programmcode (in Java oder Acti- veX) Ganz bewusst ausgeschlossen bzw. sofern n¨otig nur am Rande betrachtet werden folgende Themen • theoretische Grundlagen der Sicherheit von Informationssystemen • Java Virtual Machine • Grundlagen der ActiveX Technologie 1.3 Struktur DerBerichtistfolgendermassenstrukturiert:NachderEinleitungfolgteinM¨ogliches Szenario mit einem b¨osartigen Java Applet, bzw. einer b¨osartigen ActiveX Kompo- nente und eine Einfu¨hrung in die M¨oglichkeiten von b¨osartigem Code. Nach einer Erleuterungen der Java Sicherheitsprinzipien folgt eine Durchleuchtung von Teilen der Sicherheitskomponenten und eine Darstellung von m¨oglichen Schw¨achen. Nach einem Kapitel u¨ber ActiveX und seinen Sicherheitsaspekten wird ein Fazit gezo- gen, dem ein Ausblick u¨ber zuku¨nftig zu erwartende Entwicklungen im Bereich von b¨osartigen Applets und ActiveX Komponenten folgt. 1.4 Begriffe Der Begriff Applet wird stellvertretende fu¨r Java Applet“ verwendet. Die in engli- ” scher Literatur verwendeten Begriffe ActiveX Controls“, ActiveX Elements“ wer- ” ” den hier mit ActiveX Komponenten bezeichnet. Malicious Code“ und b¨osartiger ” ” Programmcode“ werden als Synonyme verwendet. Weitere in diesem Dokument verwendeten Abku¨rzungen sind im Anhang B auf Seite25zusammengefasst.DasLiteraturverzeichnismits¨amtlichenverwendetenRe- ferenzen befindet sich auf Seite 26. 3 Kapitel 2 Malicious Mobile Code Malicious Mobile Code oder b¨osartiger Code beschreibt ein Programm, das u¨ber ein NeztwerkaufdenRechnergeladenundausgefu¨hrtwerdenkannunddemBenutzerin irgendeinerWeiseSchadenzufu¨gt.ImfolgendenKapitelwirdeinm¨oglichesSzenario beschrieben,einsolches ProgrammSchadenverursachenk¨onnte.Anschliessendwird gezeigt, welche M¨oglichkeiten Java und ActiveX zur Programmierung von Malicious Mobile Code bietet. 2.1 Gefahrenszenarios Es gibt verschiedene Situationen in denen heruntergeladener und ausgefu¨hrter Pro- grammcode dem Benutzer Schaden verursachen kann. In Zusammenhang mit b¨os- artigem Programmcode sind vor allem folgende Sicherheitsaspekte von besonde- rem Interesse: Die Identifikation, Authentisierung, Autorisierung und die Berechti- gungskontrolle. Fu¨r einen gezielt herbeigefu¨hrten Schaden ist in Abbildung 2.1 ein M¨ogliches Angriffsszenario dargestellt. 1. Das Applet wird von einer Webseite geladen 2. Es stellt eine neue Verbindung zu einem benachbarten Rechner im internen Netzwerk her und tauscht mit ihm Informationen aus 3. Es gelangen Daten zuru¨ck ins ¨offentliche Netz, die nur fu¨r das interne Netz bestimmt waren Schritt eins und drei sind legitime Verbindungen, falls die Firewall einen normalen Webzugriff und die Browser-Einstellungen das ausfu¨hren von Java erlaubt, was in der Regel den Standardeinstellungen entspricht. Die in Schritt zwei autonom durch das Applet hergestellte Verbindung ist realistischer, als man vielleicht im ersten Augenblick denkt. Ein lokal ausgefu¨hrtes Java Applet besitzt alle dazu notwendigen Rechte. Wird vor der Ausfu¨hrung des Programmes ein dazugeh¨orendes Zertifikat Kapitel 2: Malicious Mobile Code mit einem simplen Mausklick best¨atigt, ist der Aufbau einer solchen Verbindung sowohl fu¨r ein heruntergeladenes Java Applet, wie auch eine ActiveX Komponente erlaubt. Abbildung 2.1: Angriffsszenario fu¨r ein Java Applet oder eine ActiveX Komponente Die Ursachen fu¨r einen Schaden k¨onnen verschiedener Natur sein: • Programmierfehler • Schwachstellen der Komponenten die ausgenutzt werden k¨onnen • gezielt oder zuf¨allig Manipulierte Komponenten • b¨osartige Komponenten Ursachenfu¨rdasEntsteheneinesSchadensk¨onnendurchausauchohneAbsichterfol- gen.DieSicherheitsvorkehrungeninderLaufzeitumgebungundbeiderU¨bertragung vonausfu¨hrbaremCodemu¨ssenabereinerabsichtlichenSchadensverursachungstand- halten. 2.2 M¨oglichkeiten in Java Eines der Hauptmerkmale von Java ist die Plattformunabh¨angigkeit. Java-Applets k¨onnen ohne Ver¨anderungen auf einer großen Anzahl verschiedener Betriebssysteme 5 Kapitel 2: Malicious Mobile Code ausgefu¨hrt werden (z.B. MS-Windows, MAC-OS, UNIX). Plattformunabh¨angigkeit an sich stellt kein Sicherheitsproblem dar, allerdings kann es die Folgen und die Verbreitung eines erfolgreichen Angriffs erh¨ohen. Bis heute hat sich die Vielfalt der am Internet angeschlossenen Plattformen aus sicherheitstechnischer Sicht als eine natu¨rliche Barriere ausgewirkt. Dadurch waren Sicherheitsprobleme oft auf ei- ne Plattform beschr¨ankt. Ein Angriff, der mit Java realisiert wu¨rde, wu¨rde hingegen nahezu alle g¨angigen Plattformen gef¨ahrden. Die Verbindung von java-f¨ahigen Sys- temen durch ein globales Netz, wie das Internet erh¨oht die Zahl der Gesch¨adigten zus¨atzlich. Der Befehlssatz der Sprache und die verfu¨gbaren Bibliotheken erlau- ben das entwickeln von m¨achtigen Programmen. Aus diesem Grund wird vor der Ausfu¨hrung eines Java Programmes die Entscheidung gef¨allt, ob es sich um ein vertrauensvolles Programm (trusted Application) handelt oder nicht. Applets wer- den dabei als nicht vertrauensvoll eingstuft und werden unter den entsprechenden Sicherheitsvorkehrungen (beschrieben auf der Sun Homepage [12]), innerhalb der sogenannten Sandbox gestartet. Ein Applet kann • eine Verbindung zu seinem Ursprungsserver1 aufzunehmen • u¨ber die Verbindung zum Ursprungsserver persistente Daten halten • beliebige System-Ressourcen (CPU und Hauptspeicher) fu¨r sich beanspruchen • verschiedene Systemvariablen (Auflistung in Tabelle 2.1) abfragen Die Ausgabe eines Applets2, welches die Systemvariablen ausliest ist in Abbildung 2.2 zu sehen. Tabelle 2.1: Fu¨r ein Applet einsehbare Systemvariablen Variablenname Bedeutung java.version Java Versionsnummer java.vendor herstellerspezifischer String des Java- Herstellers java.vendor.url URL des Java-Herstellers java.class.version Versionsnummer der Java Laufzeitum- gebung os.name Name des Betriebssystems os.arch Architektur des Betriebssystems file.separator File Separator path.separator Path Seperator line.separator Zeichen fu¨r Zeilenumbruch 1Der Ursprungsserver ist der Server von dem das Applet heruntergeladen wurde 2BeispielentnommenausdemJavaTutorialvonSun[12]http://java.sun.com/sfaq/example/ getOpenProperties.html 6
Description: