Wie ein Grafiktreiberfehler auf dem Samsung Galaxy S6 Tab-Daten von Google Chrome durchsickern ließ

Haben Sie sich jemals gefragt, wie Sicherheitslücken gefunden werden? Das in Großbritannien ansässige Unternehmen GraphicsFuzz erklärt, wie es auf einen Fehler im Grafiktreiber des Samsung Galaxy S6 gestoßen ist, den es ausnutzen konnte, um Daten aus geöffneten Tabs in Google Chrome anzuzeigen.

Bereits Ende März kam ein in Großbritannien ansässiges Start-up-Unternehmen, das sich auf das Testen der GPU-Zuverlässigkeit spezialisiert hat, mit einem Angebot an uns heran GPU-Fehler, den sie entdeckt haben das verursacht die Qualcomm Snapdragon 845Samsung Galaxy S9/S9+ zum Neustart beim Besuch einer Webseite. Die Firma rief an GraphicsFuzz, hat mit uns zusammengearbeitet, um das Problem zu melden Qualcomm Und Samsung. Einige unserer Leser waren daran interessiert zu erfahren, wie ein Unternehmen aussieht GraphicsFuzz ist in der Lage, diese Schwachstellen zu finden, daher haben wir mit dem Unternehmen zusammengearbeitet, um zu zeigen, wie sie eine ältere GPU-Schwachstelle entdeckt haben. Diese bereits behobene Sicherheitslücke ermöglichte es einem Angreifer, den Inhalt von aus der Ferne auszuspionieren

Google Chrome Browser-Registerkarten auf der Samsung Galaxy S6.

Dieser Benutzer besuchte die Website seiner Bank, bevor er die bösartige Webseite besuchte. Die Inhalte wurden erfasst und auf einen Remote-Server hochgeladen. Quelle: GraphicsFuzz.

Wie GraphicsFuzz GPU-Fehler findet

Ein Grafiktreiber funktioniert, indem er ein Shader-Programm nimmt und es zur Ausführung an die GPU sendet und so das Bild rendert. Bevor der Shader an die GPU gesendet wird, übersetzt ihn der Grafiktreiber in eine Form, die die GPU verstehen kann. Eine fehlerhafte Übersetzung kann zu Darstellungsfehlern, Programm- oder Geräteabstürzen, falschen Bildern und sogar Sicherheitsproblemen führen. GraphicsFuzz hat eine automatisierte Testsuite Dadurch können sie diese Fehler anhand einer Reihe von Referenz-Shadern finden. Wenn ein Benutzer führt ihren Test durch, alle resultierenden Bilder sollen gleich aussehen. Jedes Bild, das anders aussieht, bedeutet, dass ein Fehler aufgetreten ist.

Ergebnisse mehrerer beliebter Geräte, auf denen die GraphicsFuzz-Testsuite ausgeführt wird. In diesen Diagrammen sind das Samsung Galaxy S6, das Samsung Galaxy S7 und das Samsung Galaxy S8 enthalten. Quelle: GraphicsFuzz.

Für das Samsung Galaxy S6, GraphicsFuzz entdeckte, dass die Bilder in einer der Zeilen Bilder zeigten, die sich eigentlich in einer anderen Tabelle befinden sollten. Dies bedeutet, dass Bilder aus früheren Tests in spätere Tests eingedrungen sind. Anschließend führte das Team die Testsuite in Google Chrome erneut aus und stellte fest, dass Teile der Webseite im Bild auftauchten. Darüber hinaus stellten sie fest, dass das Öffnen eines anderen Tabs dazu führte, dass im Bild Teile anderer Tabs angezeigt wurden. Im Wesentlichen ermöglichte dieser Fehler, dass ein Google Chrome-Tab Informationen über einen anderen Chrome-Tab preisgab! Das Team dahinter GraphicsFuzz Sie haben nicht absichtlich nach Sicherheitslücken gesucht, aber als Ergebnis ihrer Tests haben sie schließlich eine gefunden. (Es ist zu beachten, dass das Team den Fehler sowohl im Standardbrowser von Samsung auf dem Galaxy S6 als auch reproduziert hat Mozilla Firefox.)

Wie der Fehler funktioniert

Das Bild wurde verwendet, um den seit langem bestehenden Fehler auf dem Samsung Galaxy S6 auszulösen. Quelle: GraphicsFuzz.

Die „bösartige“ Webseite erstellt von GraphicsFuzz verwendet WebGL, um zu versuchen, eine Weltraumszene innerhalb einer Leinwand zu zeichnen, wie oben gezeigt. Die Farbe jedes Pixels wird durch einen Fragment-Shader bestimmt, ein von der Webseite bereitgestelltes Programm zur Ausführung auf der GPU. Der GraphicsFuzz Das Framework hat den Fragment-Shader geändert, was dazu führte, dass er sehr lange lief. Wenn ein Shader zu lange ausgeführt wird, bricht der Browser oder das Betriebssystem normalerweise das Rendern ab. Obwohl die GPU das Rendern nach einigen Pixeln abbrach, meldete der GPU-Treiber dies jedoch nicht an Google Chrome. (Wenn Sie sich das Bild oben im Artikel ansehen, das Müll-Videospeicher zeigt, können Sie oben tatsächlich Teile der Weltraumszene sehen links.) Dies bedeutet, dass die Pixel, die vor dem Abbruch gerendert wurden, unberührt bleiben, was bedeutet, dass das endgültig gerenderte Bild größtenteils Müllvideo ist Erinnerung. Da der Videospeicher kontinuierlich zum Rendern anderer Webseiten verwendet wird, enthalten die „Müll“-Daten tatsächlich frühere Renderings anderer Webseiten. Dadurch werden letztendlich andere Webseiten auf der „schädlichen“ Webseite angezeigt. Entscheidend ist, dass WebGL es der Webseite ermöglicht, den Inhalt dessen zu erfassen, was gerendert wird. Dieses Bild wird dann auf einen Remote-Server hochgeladen.

Diagramm zur Erläuterung des seit langem bestehenden GPU-Fehlers, der dazu führt, dass Chrome-Tab-Daten „durchsickern“. Quelle: GraphicsFuzz.

Google Chrome verwendet mehrere Prozesse, sodass verschiedene Registerkarten oft isoliert sind, was diesen Exploit auf den ersten Blick unmöglich erscheinen lässt. Allerdings interagiert Chrome mit der GPU über einen einzigen „GPU-Prozess“, was bedeutet, dass alle Tabs denselben GPU-Speicher nutzen, sodass dieser Exploit funktioniert. Das obige Diagramm zeigt dies detaillierter.

Der Fehler wird in diesem Video in den ersten 22 Sekunden demonstriert. Weitere von GraphicsFuzz gefundene Sicherheitsprobleme werden ebenfalls aufgezeigt.

Lektionen, die gelernt werden müssen

Eine fehlerhafte GPU kann alle Sicherheitsmaßnahmen von Google Chrome und Android umgehen, da WebGL es jeder schädlichen Webseite ermöglicht, Code zur Ausführung an die GPU zu senden. Google kann GPU-Fehler nicht beheben da das Unternehmen keine Kontrolle über die Hardware und Treiber hat. In diesem Fall obliegt es dem GPU-Anbieter (in diesem Fall ARM), den Fehler zu beheben, und dem OEM, dessen Geräte betroffen sind (in diesem Fall Samsung), den Fix in ein Update zu integrieren. Fügt man noch Netzbetreiber hinzu, erkennt man sofort, dass die Behebung eines Fehlers wie diesem sehr lange dauern kann – es hat gedauert mindestens 5 Monate Damit die meisten Samsung Galaxy S6-Benutzer den Patch erhalten.

GraphicsFuzz hilft GPU-Anbietern dabei, schwer zu erkennende Fehler zu finden, wie etwa Fehlkompilierungsfehler, die dazu führen, dass der falsche Code auf der GPU generiert und ausgeführt wird. Ihr automatisiertes Test-Framework ermöglicht es ihnen, Fehler wie den in diesem Artikel vorgestellten zu finden. Es hat sich gezeigt, dass die durch die „bösartige“ Webseite verursachte Dauerschleife auch auf anderen Geräten wie dem zu Problemen führt HTC One M7 und in jüngerer Zeit die Samsung Galaxy S9. GraphicsFuzz testet Flaggschiff-Smartphones und veröffentlicht a Ergebnistabelle Hier werden diese Geräte anhand ihrer Leistung in einer Teilmenge ihrer Tests eingestuft. Hunderte von Abstürzen und Renderingfehlern wurden während ihrer Tests gefunden, die meisten werden jedoch nicht daraufhin untersucht, ob sie eine Sicherheitsbedrohung darstellen. Wie dieser Exploit zeigt, stellt eine sich schlecht verhaltende GPU jedoch ein Sicherheitsrisiko dar und es besteht die Möglichkeit, dass eine oder mehrere kritische Sicherheitslücken darauf warten, entdeckt zu werden. GraphicsFuzz hofft, dass GPU-Anbieter der Verbesserung der Treiberqualität in Zukunft Priorität einräumen.

Vergleichende Zuverlässigkeit von Grafiktreibern, sortiert nach der Anzahl der Gesamtprobleme. Quelle: GraphicsFuzz.

Zeitplan für die Offenlegung

  • Im Dezember 2016, GraphicsFuzz habe den Fehler dem gemeldet Google Chromium-Bug-Tracker weil es für das Chrome-Reward-Programm berechtigt war. Nachdem GraphicsFuzz den Fehler an den Google Chromium Bug-Tracker übermittelt hatte, wurde der Fehler von Google akzeptiert und zum Patchen an ARM und Samsung weitergeleitet.
  • Google leitete den Bericht weiter an Kontakte bei ARM und Samsung.
  • Samsung hat den Fehler stillschweigend behoben und das Update im Android 7.0 Nougat-Update bereitgestellt, das zwischen März und Juni 2017 veröffentlicht wurde. Obwohl kein CVE von Samsung, Google oder ARM erstellt wurde und weder Samsung noch ARM Informationen zu dem Patch veröffentlicht haben, beachten Sie dies GraphicsFuzz habe den Fehler nicht über das gemeldet ordnungsgemäßer Prozess.
  • Später, GraphicsFuzz konnte bestätigen, dass sowohl Samsung als auch ARM den Bericht gesehen hatten und dass ARM das Problem aufgrund des Berichts beheben konnte.
  • Im August 2017, GraphicsFuzz wurde von Google für den Fehlerbericht mit 2.000 US-Dollar belohnt.
  • Im November 2017, Der Fehlerbericht wurde veröffentlicht.