Fehler bei JavaScript-Verarbeitung führt in aktuellen Browsern zum Absturz

JensusUT

Senior Member
Gerade auf Heise gefunden:

Berend-Jan Wever, Entdecker der IFRAME-Sicherheitslücke im Internet Explorer, hat auf mehreren Sicherheit-Mailinglisten einen Code-Schnipsel veröffentlicht, das den Internet Explorer unter Windows XP mit Service Pack 1 zum Absturz bringt.

<HTML>
<SCRIPT> a = new Array();
while (1) { (a = new Array(a)).sort();
} </SCRIPT>
<SCRIPT> a = new Array();
while (1) { (a = new Array(a)).sort();
} </SCRIPT>
</HTML>

Die aktuelle Version von Firefox stürzt beim Aufruf ebenfalls ab und öffnet den Quality Feedback Manager, um einen Fehlerbericht an die Entwickler zu senden, Mozilla reagiert ähnlich. Opera 7.54 beendet sich ohne weitere Fehlermeldung. Der Preview-Release von Opera 7.60-3 machte unter Windows das ganze System instabil, indem er einfach den Speicher immer weiter vollschrieb.

Offenbar begrenzen die JavaScript-Interpreter die weiteren Funktionsaufrufe nicht, wenn kein Platz auf dem Stack mehr vorhanden ist und überschreiben einfach andere Bereiche. Nur unter Windows XP mit Service Pack 2 gibt der Internet Explorer die Fehlermeldung "Stack Overflow at Line:" aus und beendet die Ausführung des Skripts -- ohne selbst abzustürzen. Eine etwas ältere Version (3.2.2 ) des Konquerors wurde bei einem Test in der heise-Security-Redaktion zwar kurzzeitig sehr langsam, bot anschließend aber sogar das Beenden des Skriptes an.

Dass sich der Fehler zum Einschleusen und Starten von Code ausnutzen lässt, ist äußerst unwahrscheinlich, da man keine Kontrolle über den Stack erhält, um beispielsweise den Inhalt von Registern oder Rücksprungadressen zu manipulieren. Wever hat die Probleme an Microsoft gemeldet, der Patch für den Internet Explorer wäre im weitesten Sinne Service Pack 2 für XP. Das Firefox-Team hat er nicht informiert, ein Eintrag in Bugzilla war ihm nach eigenen Angaben zu umständlich. Für Firefox gibt es noch kein Update. Ob Opera den Fehler in der finalen Version 7.60 beseitigt ist unklar.


Eine noch einfachere Variante gibt es im Heiseforum:

oldo.org
Um den Firefox 1.0 unter Linux zum Absturz zu bringen, reicht schon folgendes:
<html>
<script>
a = new Array(); while (1) { a = new Array(a); }
</script>
</html>

Habe ich gerade unter FF/WIN ausprobiert... einfach den Text als .html speichern, öffnen... schwupp :) Weg isser.

Text mal angehängt...
 

Anhänge

  • test.html.txt
    94 Bytes · Aufrufe: 328
Oben