Unsignierte Java-Applets brechen aus Sandbox aus[Update]

Applets von verschiedenen Webseiten können durch die Verwendung undokumentierter statischer Variablen des JDK denselben Datenbereich teilen.

In Pocket speichern vorlesen Druckansicht 318 Kommentare lesen
Lesezeit: 2 Min.
Von
  • Daniel Bachfeld

Applets von unterschiedlichen Webseiten können durch die Verwendung undokumentierter statischer Variablen des JDK denselben Datenbereich teilen, so der Entwickler Marc Schoenefeld in einem Posting auf Bugtraq. Dieses Fehlverhalten soll eigentlich die sogenannte Sandbox verhindern, die den Zugriff von Applets auf Ressourcen des Systems und anderer Prozesses verbietet.

Auf Grundlage der Java-Klasse org.apache.xalan.processor.XSLProcessorVersion zur Verarbeitung von XML-Daten hat Schoenefeld eine Demonstration des Fehlers programmiert. Ein unsigniertes Applet liest dabei Daten aus einer Variablen eines signierten Applets einer anderen Domäne. Verändert das unsignierte Applet den Inhalt der Variablen, kann das signierte Applet sogar abstürzen. Getestet wurde das Verhalten mit Suns JDK/SDK 1.4.2_01, eine Lösung für das Problem gibt es derzeit nicht.

Dass sich mit dieser Sicherheitslücke Systeme kompromittieren lassen, ist allerdings unwahrscheinlich. Jedoch zeigt der Fehler die unzulängliche Implementierung der Sandbox. Diese Funktion wird oft als Sicherheitsvorteil von Java genannt, in der Vergangenheit wurde aber mehrfach bewiesen, dass ein "Ausbruch" aus der Sandbox möglich ist.

[Update] Mit einer weiteren Demonstration der Lücken der Sandbox, zeigt Schoenfeld auf seinen Seiten, wie ein Java-Applet in schneller Folge auf die Floppy zugreift und damit ein nervtötendes Geräusch erzeugt. Die Demo kann unter http://www.illegalaccess.org/exploits/java/applet/MyFloppySucks.html aufgerufen werden und setzt ein entsprechendes Java-Plug-In voraus. Schoenefeld weist daraufhin, das sowohl eine eingelegte Floppy, als auch das Laufwerk beschädigt werden können. Beim Test in der c't-Redaktion war nach dem Starten der Demo ein Reboot notwendig.

Siehe dazu auch: (dab)