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