GoogleWatchBlog

Pwnium: Der Ausbruch aus der Chrome-Sandbox in 6 Schritten

» Web-Version «

Allgemein gilt der Chrome als Festung unter den Browsern. Durch die Sandbox-Technik, welche nach und nach auch von anderen Browser-Herstellern übernommen wird, ist es so gut wie unmöglich auszubrechen und beliebigen Code auszuführen. Zwei mal ist es aber bisher doch gelungen – und eine Variante wird jetzt detailiert von Google geschrieben.


Statt mit der „Unsicherheit“ von Chrome hinter dem Berg zu halten und heimlich Sicherheits-Updates unterzuschieben, geht Google genau den umgekehrten Weg und möchte dadurch natürlich auch andere Entwickler auf eventuelle Schwachstellen hinweisen. Eigens für das knacken des Chrome-Browsers hatte Google den Pwnium-Wettbewerb ins Leben gerufen.

Dem User Pinkie Pie ist es als erstem gelungen aus Chromes Sandbox auszubrechen und beliebigen Code im Betriebssystem auszuführen – dafür hat er das Preisgeld von 50.000 US$ kassiert. Allerdings war eine Kombination von 6 Sicherheitslücken für diesen Hack notwendig. Google hat diese Lücken mittlerweile alle geschlossen und alle Browser-Versionen upgedatet, so dass die Details dieses Hacks nun veröffentlicht werden können.

Die einzelnen Schritte des Hacks
1. Als erstes hat er einen Bug beim Prerendering ausgenutzt, durch welchen alle Plug-Ins für die vorgeladene Website automatisch aktiviert werden. Dadurch konnte er einen Native Client ausführen.

2. Mit diesem Native Client hatte er dann die Möglichkeit Funktionen innerhalb des GPU-Prozesses auszuführen. Durch 2 miteinander kombinierte Funktions-Aufrufe gelang es ihm, ein Buffer Overflow auszulösen. Durch diesen konnte er 8 Byte Daten in den GPU-Buffer schreiben.

3. Durch diese 8 Byte konnte er einen Verweis auf eine Tree-Struktur innerhalb des GPU-Prozesses durch einen Verweis auf eine eigene modifizierte Struktur ersetzen – an diesem Schritt hat auch Windows seinen Anteil. Dadurch konnte er Code innerhalb des GPU-Prozesses, der aber immer noch von der Sandbox umgeben ist, ausführen.

4. Der GPU-Prozess wiederum hat ein begrenztes Zugriffsrecht auf Pipes welche die GPU mit Chromes IPC-Layer verbinden. Durch einen Software-Fehler hatte die GPU darauf Zugriff auf den Renderer, welcher einerseits die Darstellung übernimmt und andererseits natürlich noch mehr Zugriffsrechte besitzt. Diesen konnte er fernsteuern.

5. Innerhalb dieses Renderer-Prozess ist es ihm durch eine weitere Sicherheitslücke gelungen, den Extension-Manager aufzurufen. Die Darstellung des selbigen wird allerdings unterbunden, so dass der User nichts davon mitbekommt. Durch diesen Aufruf bekommt der Renderer Zugriff auf den IPC-Layer des Extension Managers.

6. Durch zwei weitere Bugs konnte er nun durch den Zugriff auf den Extension-Manager eine beliebige Extension laden ohne dass der User etwas davon mitbekommt. Mit diesen Extensions hat er nun volles Zugriffsrecht auf den PC mit allen User-Rechten.

Details zu den einzelnen Schritten, inklusive Bug-Reports und Code-Beispielen findet ihr im Chromium-Blog.

Es gibt übrigens noch einen zweiten Weg aus der Sandbox auszubrechen, dieser besteht sogar aus 10 Schritten und wurde von Google mittlerweile ebenfalls gefixt. Allerdings nutzt dieser Hack Sicherheitslücken aus die viele andere Browser und Hersteller betreffen – so dass Google diesen eine „angemessene Zeit“ lassen will diese Lücken ebenfalls zu stopfen. Erst dann wird Google auch den zweiten Hack veröffentlichen.

» Bericht im Chromium Blog


Keine Google-News mehr verpassen:
GoogleWatchBlog bei Google News abonnieren | Jetzt den GoogleWatchBlog-Newsletter abonnieren