Java

 

Dieser Artikel soll es dem Leser ermöglichen, den Begriff „Java“ sinnvoll einzuordnen und seine eigene Entscheidungen im Umgang damit zu treffen. Insofern wird auf einige (zu) technische Aspekte nicht eingegangen, die in diesem Kontext nicht relevant sind oder zu deren Beurteilung Programmierkenntnisse notwendig sind.

 

Java ist eine objektorientierte, plattformunabhängige, seit 1990 von Sun entwickelte Programmiersprache. Der Name stammt vermutlich von dem gleichnamigen Wort für Kaffee im US-amerikanischen Sprachgebrauch. Dieser Bezug findet sich auch im Logo wieder:

 

 

Generell muss unterschieden werden zwischen

 

*  Java-Applikationen

      Dies sind vollwertige Anwendungen wie man sie von anderen Programmen her kennt. Da sie nicht über das Internet geladen werden, spricht man auch von lokalem Code. Java ist eine Weiterentwicklung von C++ und es spricht einiges dafür, dass diese Programmiersprache manchen anderen den Rang abläuft. Da reines Java jedoch unabhängig vom Internet ist, wird es im Folgenden nicht weiter betrachtet. Der Begriff Java bezieht sich somit ab sofort stets auf die ...

 

*  Java-Applets

      Java-Applets wurden aus Sicherheitsgründen im Funktionsumfang stark eingeschränkt und werden in einer virtuellen Maschine („Sand box“) ausgeführt, die zum Beispiel vom Browser zur Verfügung gestellt werden kann.

 

Wird mit einem Java-fähigen Browser die Verbindung zu einer Web Seite hergestellt, die Java verwendet, werden die Java-Applets automatisch über das Internet geladen und auf dem PC des Users unter der „Kontrolle“ des Browsers mit eingeschränkten Rechten ausgeführt. Dies sind:

 

*  kein Lesen und Schreiben von Dateien auf dem Client möglich (Gegenbeispiel: siehe unten)

*  keine Netzwerkverbindung zu anderen Rechnern möglich,

      außer zu dem Rechner, von dem das Applet stammt

*  Start weiterer Programme auf dem Client ist nicht möglich

*  Kein Laden von zusätzlichen Programm-Bibliotheken möglich

*  Kein Aufruf von Systemfunktionen (mit 9 definierten Ausnahmen).

 

Die Umgebung sieht schematisch so aus:

 

Ohne die Restriktionen der Sand box könnte ein Java-Applett mit den gleichen Rechten und somit dem vollen Zugriff auf das System ablaufen wie ein „vollwertiges“ Java-Programm.

 

Da Sicherheit bereits beim Design von Java eine große Rolle spielte und die genannten Restriktionen die größten Gefahren vermeiden sollen, scheint der Einsatz von Java im Internet zunächst problemlos. Die verbleibenden Risiken gliedern sich in zwei Gruppen:

 

*  Denial of Service (DoS)

      Hierbei werden Ressourcen des Rechners wie z.B. die CPU (= Prozessor) absichtlich oder (aufgrund von Programmierfehlern) auch unabsichtlich in so hohem Maße angefordert bzw. verwendet, dass ein Weiterarbeiten kaum noch möglich ist: z.B. bleibt die Prozessorauslastung auf 100% stehen, es wird der komplette freie Arbeitsspeicher blockiert oder 100e von Fenstern geöffnet. Hier hilft meist nur noch Schließen des Browsers oder gar ein Reboot (Neustart) des PC.

 

*  Aufweichen oder Umgehen der Sand box Beschränkungen durch:

*  Bugs in Web Browsern

*  Unterschiedliche Philosophien der Browserhersteller, wie das an sich sehr umfassend und detailliert konfigurierbare Sicherheitskonzept des JDK 1.2 (Java Development Kit) zu implementieren ist.

*  Erfragen von Zugriffsrechten (Netscape) oder Bestätigen lassen von Zertifikaten (IE) beim User, der nichtsahnend bejaht. Beispiele: siehe unten.

 

Während man unerwünschten DoS-Effekten leicht entgehen kann, in dem man die betreffende Web Site nicht mehr aufsucht, sind die möglichen Auswirkungen der zweiten Gruppe nicht zu unterschätzen. Entfällt der Schutz der sand box, kann das Java-Applett auf das gesamte System zugreifen (Filesystemrechte, etc. vorausgesetzt) !

 

In den letzten Jahren gab es leider etliche Bugs in der Implementierung, einige Beispiele finden sich in folgenden zwei Listen:

 

http://www.java.sun.com/sfaq/chronology.html             SUNs chronologische Liste sicherheitsrelevanter Fehler

 

http://www.cs.princeton.edu/sip/history/                        Liste von Sicherheitslücken in kommerzieller Software im Zusammenhang mit Java

 

Wer sich selbst einen Eindruck verschaffen möchte, was ein Java-Applet zu tun vermag, kann sich dies (natürlich auf eigene Gefahr!) eindrucksvoll an folgendem Demo-Applet demonstrieren lassen: http://www.finjan.com/mcrc/java.cfm

 

Du zögerst ? Immerhin wird hier angekündigt, dass eine sicherheitsrelevante Demonstration erfolgen wird! Andere Web Sites schicken Dir das Applet ohne Ankündigung, sobald Du deren Seiten aufrufst und es wird auf Deinem PC ausgeführt, falls Du Java in Deinem Browser aktiviert hast! Also ... ?      :->

 

Mit diesen provokanten Sätzen möchte ich Dich einladen, Deine bisherigen Browsereinstellungen zu überdenken. Auf der genannten Seite passiert zunächst noch nichts, sondern es wird genau erklärt, was das Applet tut, das man auf der Seite unten anklicken kann. Klickt man es an, so stellt Netscape Navigator die Frage:

 

 

Die Frage nach Zugriff auf das Dateisystem könnte in einem anderen Kontext plausibel erscheinen und vom Benutzer bejaht werden (hier: to grant=gewähren). Gibt man dem Applet das Recht für Dateizugriffe, so wird der angekündigte Ordner  angelegt, der wichtige Systemdateien als Kopie enthält.

 

Im Falle des Internet Explorers erscheint folgendes Fenster:

 

 

... mit dem sicherlich nicht allzu viele Benutzer etwas anfangen können.

 

Der Hinweis, dass man durch Klicken von Yes dem Java-Applet vollen Zugriff auf das Filesystem gewährt, fehlt ganz ! Auch hier wird anschließend der Ordner angelegt:

Ach ja, übrigens:

Wer ein Mikrofon/Web Cam am PC angeschlossen hatte, wurde ohne sein Wissen für einen kurzen Moment aufgenommen, aber ich möchte Dir nicht das Vergnügen nehmen, das selbst auszuprobieren ...

 

Wie kannst Du mit den Risiken von Java umgehen ?

 

Du kannst:

 

*  Sie ignorieren ... die Schlechteste aller Alternativen !

      Ich habe mit dem Gedanken gespielt, diese Alternative gar nicht erst aufzuzählen. Leider bleibt Java jedoch aus Unwissenheit (oder warum auch immer) noch viel zu oft eingeschaltet. Ich unterstelle mal, dass die wenigsten wissen, was sie tun! In so fern ist Ignoranz/Unwissenheit leider auch eine Alternative.

*  Java in Deinem Browser abschalten.

      Dies ist IMHO (in my humble opinion, meiner bescheidenen Meinung nach) die beste Alternative. Um Deiner nächsten Frage gleich vorzubeugen: Es ist nicht so, dass jetzt die Hälfte der Web Seiten nicht mehr vernünftig erscheinen ! Java wurde zunächst hauptsächlich eingesetzt, um Web Seiten etwas „aufzupeppen“; zunehmend entstehen Java-Applets, die Funktionen abseits der Webseiten-Navigation abdecken.

      Empfehlung: Schalte Java nur dann ein, wenn Du auf einer bestimmten Web Site einen konkreten Grund dazu hast und die Seiten für vertrauenswürdig hältst. Schalte Java nach Verlassen dieser Seiten sofort wieder ab.

*  Ein Zusatzprodukt verwenden.

      Im professionellen Umfeld spielt Finjan mit Produkten wie SurfinGate eine führende Rolle, wenn im Rahmen von Content Security die Kontrolle über aktive Inhalte gefragt ist. Für den nicht-kommerziellen Gebrauch wird SurfinGuard Pro kostenlos zur Verfügung gestellt. SurfinGuard Pro arbeitet ebenfalls nach einem Sandbox-Prinzip, prüft jedoch jede Aktion eines Java-Applets/ActiveX/JavaScript/... auf unerlaubte Aktionen und alarmiert in Echtzeit. Ich habe SurfinGuard Pro 5.5 Beta zwar nicht ausführlich getestet, aber es macht einen guten Eindruck und mir ist kein vergleichbares, pro-aktives Produkt bekannt.

 

 

Zuletzt überarbeitet:

01.07.01 Olaf Lucas

 

 

Einleitung             Inhalt                           Home