News : Javascript legt Browser lahm

, 51 Kommentare

Ein als Proof-Of-Concept vorgelegtes Javascript lässt derzeit viele sicherheitsbewusste Surfer aufhorchen. Mit einem simplen Trick werden so diverse aktuelle Internet-Browser aus dem Tritt gebracht, wenn nicht sogar komplett unbrauchbar gemacht.

<html><head><title>Beispiel-Titel</title><script type="text/javascript">
function ex() {
	var buffer = "";
	for (var i = 0; i < 5000; i++) {
		buffer += "A";
	}
	var buffer2 = buffer;
	for (i = 0; i < 500; i++) {
		buffer2 += buffer;
	}
	document.title = buffer2;
}
</script></head><body>Verlockender Werbetext <a href="javascript:ex();">Click Me
</a></body></html>

Das Skript selber erzeugt bei aktiviertem Javascript einen neuen Seitentitel, indem es einen String mit tausenden Buchstaben füllt, und danach den Seitentitel mit dem Wert des Strings belegt. So kann aus „Beispiel-Titel“ ganz schnell mal eine zig-tausend Zeichen lange Kette werden.

Dieser Seitentitel wird dann vom Browser in seiner History- bzw. Verlaufsdatei gespeichert. Bei einem Neustart liest der Browser diese Verlaufsdatei neu ein und bleibt dann unter Umständen an dieser Stelle hängen oder stürzt ab. Möglicherweise kann auf diese Art auch Schadcode übergeben werden, das ist derzeit jedoch nicht bestätigt.

Als Workaround empfiehlt sich für die betroffenen Programme entweder Javascript abzuschalten oder die History-Funktion zu deaktivieren. Interessanterweise ist der InternetExplorer 6 von Microsoft von diesem Problem nicht betroffen. Der IE ignoriert einfach den neuen Seitentitel für seinen Verlaufsspeicher und kann das Problem auf diese Art umgehen.

Update

Offenbar lässt sich beim Firefox dieses Verhalten ändern, indem folgende Code-Zeile in die für Grundeinstellungen zuständige Datei prefs.js eingefügt wird:

user_pref("capability.policy.default.HTMLDocument.title.set","noAccess");

Der Browser muss vor der Änderung geschlossen werden, da er ansonsten beim Schließen diese Datei wieder überschreiben würde.

Vielen Dank an HappyMutant für diesen Tipp.