CrashSafari lässt iOS und OS X durch Aufruf eines Links mit Safari abschmieren

artikel_beachballEine interessante Schwachstelle gibt es aktuell im Safari Browser unter OS X und iOS. Der Aufruf eines Links genügt, um Safari oder das ganze System zum Absturz zu bringen. Hervorgerufen wird der Crash durch die HTML5 History API. Wird diese häufig genug aufgerufen, ist der Browser überfordert. Dafür genügt ein HTML-Header und ein Stück JavaScript, schon kann man diese Überforderung hervorrufen. Im Fall von iOS kam es bei mir zu einem Respring des Systems (kein Reboot, Touch ID-Code musste nicht erneut eingegeben werden), unter OS X schien erst nur Safari zu hängen, letztendlich wurde aber das ganze System innerhalb kürzester Zeit unbrauchbar langsam, sodass auch hier nur noch ein Reboot half.

beachball

Ihr wollt das Ganze selbst ausprobieren? Kein Problem, ruft einfach crashsafari.com mit einem iOS- oder OS X-Gerät auf und schon seht ihr die Action live. Gefährlich ist der Aufruf der Seite nicht, sie überfordert lediglich den Browser. Der „Trick“ funktioniert auch beim Klick auf Links aus Apps heraus, bringt dann – je nachdem, mit was der Link geöffnet wurde – die jeweilige App, Safari oder das ganze System zum Absturz. Ihr könnt Euch vorstellen, dass entsprechend viele Troll-Links in den einschlägigen sozialen Netzwerken unterwegs sind…

Der Bug ermöglicht laut 9to5Mac keine Angriffe auf das System, sodass es sich hier zwar um ein Ärgernis, aber keine große Gefahr handelt. Man kann dennoch davon ausgehen, dass Apple das Problem angehen wird und irgendwann mit einem Update beseitigt. Die nächsten Tage sollte man sich gut überlegen, ob man jede Url eines Link-Shorteners anklickt, es wird sicher vermehrt mit „witzigen“ Social Media-Nutzern zu rechnen sein.

Update Carsten: Betrifft laut Aussagen einiger Leser auch Chrome mit Windows und auch Android.

Gefällt dir der Artikel? Dann teile ihn mit deinen Freunden.

Sascha Ostermaier

Technik-Freund und App-Fan. In den späten 70ern des letzten Jahrtausends geboren und somit viele technische Fortschritte live miterlebt. Vater der weltbesten Tochter (wie wohl jeder Vater) und Immer-Noch-Nicht-Ehemann der besten Frau der Welt. Außerdem zu finden bei Twitter (privater Account mit nicht immer sinnbehafteten Inhalten) und Instagram. PayPal-Kaffeespende an den Autor.

Das könnte dir auch gefallen…

Mit dem Absenden eines Kommentars willigst du unserer Datenschutzerklärung und der Speicherung von dir angegebener, personenbezogener Daten zu.

24 Kommentare

  1. Also mein Chrome auf Windows crasht es ebenfalls.
    Kann im TaskManager zusehen, wie CPU und RAM Auslastung immer weiter steigen, irgendwann kommt dann der Crash.

  2. Jo, funktioniert auch ganz wunderbar mit Chrome unter Windows 10.

  3. Jeder, der sich etwas auskennt, weiß, dass das gar nicht sein kann. Denn sowas gibt es nur bei Windows und Android.

  4. @NickS

    Jeder, der sich etwas auskennt, weiß, dass er nicht bei Apple nicht monatelang auf einen Fix/ein Update warten muss 😉

    Aber wie gesagt. Funktioniert auch mit Chrome und Windows.

  5. Einfach krank wie manche Leute Apple verehren

  6. Ich vermute mal, dass das ganze leicht ironisch gemeint war

  7. DancingBallmer says:

    An der Stelle mal eine Empfehlung für die Erweiterung Ultimate Status Bar, welche es erlaubt die Links vorher sich anzeigen zu lassen.

    @ Ataxie
    Was ist bitte jetzt genau krank? Sorry, aber dieses ständige Rumgetrolle und Schubladendenken im Internet geht mir tierisch auf die Nerven.

  8. mit firefox und chrome funktioniert das auch sehr zuverlässig :S alle angepinnten tabs verloren 😀

  9. @ataxie112
    Und noch kranker, wie manche Leute eine Verehrung erkennen, wo nicht ansatzweise eine ist.
    Es ist ein Bug, und dieser wird sicher schnell behoben werden. Mehr gibt es dazu eigentlich nicht zu sagen. Also einfach nicht auf diese Seite gehen und ein paar Tage abwarten. Mal davon abgesehen, dass es offensichtlich kein exklusives iOS/OSX Problem ist. Verehren die Windows 10 Chrome Nutzer nun deswegen auch Google/Microsoft?!

  10. Thomas Baumann says:

    Opera @Win7 ebenfalls betroffen.
    Aber es crasht nur den Browser, nicht das System.

  11. Chrome auf Windows, OS X, Ubuntu und Android auch betroffen!…

  12. Wenn man sich mal den Code anguckt der zu dem Verhalten führt sieht man dass vermutlich alle Browser die HTML5 können davon betroffen sind:

    var total = „“;
    for( var i = 0; i < 100000; i++ ) {
    total = total + i.toString();
    history.pushState(0,0, total );
    }

  13. FireFox 45.0a2 mit OSX 10.11.2 auch

  14. Das heißt der gute IE6 ist von diesem Bug nicht betroffen 😀 ?

  15. @Markus jain, vermutlich nicht so heftig

    das history.pushState() sorgt für die meiste Belastung und ist das einzige aus HTML5 aber alleine die Schleife und das Zahlen rumschubsen scheint für Javascript auch schon problematisch (aber noch nicht tödlich) zu sein 😀

  16. Ich fand das interessant genug um es mal zu testen:
    https://upload.gecko.space/42cfb078b22afa1d0dcebd6c378ec314b164a7c2/ie6.png

    IE6 überlebt es weil er das Javascript abbricht weil er history nicht kennt 😀

  17. Und auf dem IE6 wurde die ganze Zeit rumgehackt wie langsam und unsicher er doch sei, steig nun wieder auf ihn um 😉

  18. Firefox kommt damit besser klar, der zeigt wenigstens noch den Text an, bei chrome bleibt das fenster weiß

  19. Chrome auf OnePlus One unter CM13 folgt instant in einem Reboot. Nexus 7 mit CM13 crasht nur den Chrome.
    Chrome unter Ubuntu bringt das ganze System zum erliegen…

  20. Wir brauchen ein neues, altes HTML. Warum gibt es überhaupt diese history-Funktion in JavaScript? Wir brauchen wieder ein entschlacktes HTML fürs Web.

  21. tja, mal wieder java…

  22. @Joran
    Dynamische HTML-Seiten (aka Web Apps) laden nicht nicht nach jeder Aktion die ganze Seite neu sondern laden Bestandteile der Seite nach oder ersetzen die. Beispiel: du hast ne Email abgeschickt und im Zentrum der Seite wird jetzt eine Versandbestätigung angezeigt. Mit der History-API kann die Web App einen neuen Eintrag im Verlauf anlegen und die URL ändern. Jeder „State“ (Veränderung eines Zustands) hat im Idealfall eine eigene URL auf die die Web App springen kann.
    Dabei ist es häufig der Fall daß die Web App noch auf den Server warten muss und wieder dynamisch Inhalte ändert. Verzögerung und Versandbestätigung bei Gmail ist wieder ein gutes Beispiel.

    @max
    JavaScript, nicht Java!

Du willst nichts verpassen?
Neben der E-Mail-Benachrichtigung habt ihr auch die Möglichkeit, den Feed dieses Beitrags zu abonnieren. Wer natürlich alles lesen möchte, der sollte den Hauptfeed abonnieren. Alternativ könnt ihr euch via E-Mail über alle neuen Beiträge hier im Blog informieren lassen. Einfach eure E-Mail-Adresse hier eingeben, dann bekommt ihr 1x täglich morgens eine Zusammenstellung. Mit dem Absenden willigst du unserer Datenschutzerklärung und der Speicherung von dir angegebener, personenbezogener Daten zu.
Wir benutzen Cookies um die Nutzerfreundlichkeit der Webseite zu verbessern. Durch Deinen Besuch stimmst Du dem zu.