Kernel Panic auf dem iPhone mit wenigen Zeilen HTML-Code
Safari und das dazugehörige WebKit-Framework zur Darstellung von Webseiten sind gegen Angriffe durch diverse Mechanismen gut abgesichert – ein Detail hat Apple aber anscheinend übersehen. Am Wochenende tauchte ein HTML-Code-Schnipsel auf, welcher auf iOS-Geräten reproduzierbar zu einer Kernel Panic führt. Auch WebKit auf dem Mac ist betroffen – dort führt der Code-Schnipsel allerdings zu keiner Kernel-Panic, sondern nur zu einem Hängen des WebKit-Hintergrundprozesses.
Der
HTML-Code ist sehr einfach: Eine große Anzahl von ineinander verschachtelter "div"-Elemente werden mit einem CSS-Style versehen, der zwei Dinge bewirkt: Die Elemente setzt man so auf eine gigantische Größe (in diesem Fall 10.000x10.000 Pixel) und versieht sie mit einem GPU-basierten Hintergrundfilter – in diesem Fall mit einem Weichzeichner.
Der Code-Schnipsel reizt die Ressourcen auf dem iOS-Gerät so weit aus, dass dies zu einer Kernel Panic führt. Wahrscheinlich reicht der Grafikspeicher nicht aus, um die vielen in einander verschachtelten Weichzeichnungsfilter zu errechnen. Da auf dem Mac erheblich mehr Ressourcen zur Verfügung stehen, hängt sich nur der betroffene WebKit-Hintergrundprozess auf – eine Kernel Panic bleibt aus.
Der Entdecker informierte Apple am Freitag über den Mangel, Apple sucht derzeit nach möglichen Lösungen. Betroffen sind auf iOS-Geräten nicht nur Safari, sondern auch alle alternativen Browser: Auf iOS besteht Apple nämlich darauf, dass alle Apps, die Internet-Seiten anzeigen, das WebKit-Framework nutzen – alternative Rendering-Engines sind nicht gestattet. Ein Fehler in WebKit führt dann natürlich dazu, direkt alle Browser zu beinträchtigen.
In der aktuellen Golden-Master-Version von iOS 12 ist der Fehler weiterhin zu reproduzieren. Glücklicherweise scheint sich der Fehler nicht dahingehend ausnutzen zu lassen, Code auszuführen oder persönliche Daten abzugreifen.