Google Chrome & Co: Einzeiliger JavaScript-Code kann den gesamten Browser zum Absturz bringen (Testlink)
Seit einigen Tagen kursiert im Web eine recht schlanke Webseite, die in den meisten Browsern problemlos geladen wird, aber in Apples Browsern dafür sorgt, dass das gesamte System abstürzt und die iPhones sogar neu starten. Gleichzeitig ist nun eine einzeilige Webseite aufgetaucht, mit der auch der Chrome-Browser auf jedem Betriebssystem ans Limit oder durch einen Absturz darüber hinaus gebracht werden kann.
Browser sind kleine Wunderwerke, an die die Menschen sehr hohe Anforderungen stellen: Sie sollen schlank und blitzschnell sein, aber natürlich dennoch mit allen Web-Technologien klarkommen und vor allem Web-Apps zuverlässig ausführen. Nach dem Tod des Internet Explorers trifft das auch auf alle großen Browser zu, womit sie für viele Menschen bereits ein Betriebssystem im Betriebssystem sind.
Eigentlich sind Browser mittlerweile smart genug, um Endlosschleifen zu erkennen und diese problemlos durch das Schließen des Tabs beenden zu können. Doch ein JavaScript-Einzeiler, der eigentlich aus einer Schleife und drei Befehlen besteht, kann auch den sonst so gut abgeschotteten Chrome-Browser zum Absturz bringen. Folgende Funktion belastet den Browser so sehr, dass auch alle anderen Tabs, der gesamte Browser und das Betriebssystem mitgerissen wird.
How to entirely freeze ChromeOS / Chrome in one line of JS? ?
<script>for(let i=0;i<1/0;i++)document.location.href="#",window.history.back(),window.history.forward();</script>
IF YOU WANT TO TRY (DON'T BLAME ME IF YOU CLICK) : https://t.co/UhoUFWej4p
— Sabri (@pwnsdx) 9. September 2018
Bei mir bleibt auf dem Desktop der Cursor für etwa 5 Sekunden hängen und die Prozessorleistung steigt in einen sehr hohen Bereich (nicht 100%). Nach etwa 15-20 Sekunden lässt sich der Tab dann schließen – es wird also aufgefangen. Bei vielen anderen Nutzern hingegen verabschiedet sich der Browser irgendwann – auch unter Android. Vermutlich ist das Verhalten je nach Ausstattung verschieden, obwohl eine Endlosschleife eigentlich immer die volle Last einnehmen könnte.
Erreicht wird der Quasi-Absturz gleich durch eine ganze Reihe von Faktoren, die in diesem Einzeiler zusammengefasst sind: Zuerst haben wir die Endlos-Schleife, die den Browser dazu bringt, die danach folgenden Befehle immer wieder auszuführen. Gleichzeitig enthält die Schleife aber auch noch die Bedingung, dass der zu iterierende Wert unter 1/0 liegen muss. Wer sich etwas mit Mathematik und IT auskennt, der weiß, dass die Division durch Null nicht möglich ist und häufig zu Abstürzen führt.
In der Schleife angekommen, wird dann mit dem Browserverlauf gearbeitet. Zuerst wird die aktuelle URL durch „#“ ersetzt, dann geht der Browser einen Schritt im Verlauf zurück und anschließend wieder einen vor. Wir gehen also zurück zur ursprünglichen Webseite und dann wieder vor zu „#“ – was sich ebenfalls nicht laden lässt. Da alle Befehle für sich genommen ungefährlich sind, kann der Browser dies wohl nicht abfangen und es kommt zum Quasi-Absturz.
Betroffen ist davon aber nicht nur Chrome, sondern laut den vielen Kommentaren unter Twitter wohl so gut wie jeder Browser.
Und wer das Ganze nun ausprobieren möchte, kann das tun. Stellt einfach sicher, dass keine wichtigen Tabs mehr geöffnet sind bzw. alles gespeichert wurde und klickt auf den folgenden Link.
Siehe auch
» Bitte den Edge-Browser nutzen: Windows 10 ‚warnt‘ den Nutzer vor der Installation von Google Chrome
» 10 Jahre Google Chrome: So begann die Geschichte des Chrome-Browsers ab dem Jahr 2006 (Video)
» 10 Jahre Google Chrome: So soll sich der Browser in den kommenden 10 Jahren verändern
GoogleWatchBlog bei Google News abonnieren | GoogleWatchBlog-Newsletter
Coole Sache, reisst auch den aktuellen Vivaldi 2.0 in den Abgrund. Nach einiger Zeit steht dann der Linuxrechner still, wo nur noch ein Ctrl-Alt-Bksp hilft.
Doof, wenn man wie ich den Vivaldi immer automatisch mit der letzten Sitzung starten lässt, und die JS Killer-Code Seite kommt dann natürlich gleich mit und legt den Browser mit allen anderen geöffneten Fenstern und Tabs lahm.
Egal, selber schuld gewesen, und wieder was gelernt. Danke für den Artikel!