Donnerstag, 13. Januar 2011

Die Festung PS3 ist erobert

Diesmal hat Sony richtig verkackt

Auf dem Chaos Communication Congress 2010 (27.-30. Dez) ist es der Gruppe fail0verflow gelungen einen Großteil der Sicherheitssysteme der PlayStation 3 auszuhebeln.

Die PS3 galt lange vor Hacks verschont, anders als die Mitstreiter Wii und Xbox 360. Das lag zum großen Teil auch daran, dass Sony seine Konsole von vornherein für alternative Systeme öffnete (sprich: Linux). Und so nebenbei bemerkt hab ich das auch mal ausprobiert, doch die Begeisterung hielt sich stark in Grenzen. Ich bin Linux um einiges schneller gewohnt (wobei man auch meine Wahl von openSUSE als Distribution kritisieren mag).

„Ich habe die Hardware erstanden, also kann ich darauf ausführen was ich will.“

– Pytey, fail0verflow

Wenn man hört, dass eine Konsole „gehackt“ wurde, bringen die meisten das automatisch damit in Verbindung, dass sie nun automatisch auch raubkopierte Spiele darauf spielen können. Das mag zwar beim Großteil der Fälle zutreffen, jedoch ist das nicht das Ziel, sondern nur ein Nebeneffekt. Es ist doch so: Wenn jemand versucht einer Masse etwas Gutes zu tun (in diesem Fall lediglich die OtherOS Funktion der PS3 wiederherzustellen oder einfach nur die komplette Kontrolle über die gesamte Hardware zu erlangen) dann gibt es irgendwo auch immer jemanden, der es für niedere Zwecke, nun ja, zweckentfremdet. Die PS3 ist von solchen Absichten nicht verschont und das war sie auch nie – sie war lediglich ein uninteressantes Ziel.

Nur muss man hier beachten, dass Sony sich hier – vielleicht sogar ohne es zu erahnen – ins eigene Fleisch geschnitten hat, als sie völlig überzogen auf die Meldung von Geohots erfolgreichem Hack mit dem Entfernen des OtherOS Features reagierten. Das hatte aber nie wirklich bedeutet, dass die PS3 nie wieder Linux ausführen können sollte. Erst ab dem Zeitpunkt als die OtherOS Funktion auch aus den älteren Modellen rausgepatcht wurde (Update 3.21), weckte Sony schlafende Hunde. Der Sprint um die Wiederaufschließung des Systems war vom Zaun gebrochen und der Schutzwall der PS3 bröckelte nach und nach immer mehr.

Wie schon erwähnt sah sich Sony gezwungen Präventivmaßnahmen zu ergreifen, was letztendlich dazu führte, dass Linux von der PS3 verbannt wurde. Sony hatte aber die Rechnung ohne die Kunden gemacht, die sich die PS3 auch (oder eben) wegen dieser Möglichkeit die Konsole zugelegt hatten. Rückerstattungsforderungen wurden in Massen an Sony und Amazon gestellt und die Rechtsprechung der EU gab u. A. einem Briten Recht, der sich durch das Entfernen „einer beworbenen Funktion“ veräppelt fühlte – zurecht wie ich anmerken möchte. Immerhin ist das ein entfernen einer Funktion, nachdem die Konsole schon Jahre auf dem Markt war, was den Wert um satte 20 % senkte.

Am aufsehenerregendsten nach Bekanntwerden des Hacks war sicherlich der PS3 Jailbreak, ein USB-Dongle der die PS3 in ihren Debug-Modus versetzte, was das dumpen der Spiele auf die interne oder eine externe (FAT32 formatierte) Festplatte erlaubte. Sony reagierte wie erwartet mit Firmware-Updates, die die Lücken schließen sollten. Durch Reverse Engineering folgten auch viele Derivate und sogar mit bestimmten Smartphones oder handelsüblichen USB-Sticks konnte der Hack durchgeführt werden. Doch eine praktikable Lösung auf Langzeit sollte es nicht sein. Dazu hab ich in der Vergangenheit schon einmal einen Eintrag gepostet: klick mich!

Doch auf dem 27c3 in Berlin am 29.12.2010 demonstrierte die Gruppe fail0verflow, wie die Sicherheitsbeschränkungen im Nu umgangen werden konnten – im Vergleich zu vielen anderen Geräten (Ja, GERÄTEN, nicht nur Konsolen, das ist wichtig).

Video hier herunterladen: http://mirror.fem-net.de/CCC/27C3/mp4-h264-HQ/27c3-4087-en-console_hacking_2010.mp4

„Entweder du unterstütz Linux auf deiner Hardware oder sie wird gehackt damit es läuft.“

– Michael Steil, IT-Sicherheitsexperte

Ich werde mal versuchen den Inhalt der Präsentation für meine technisch nicht so begabten Leser so simpel wie möglich zusammenzufassen (wobei eine Kurzfassung wohl unmöglich sein wird): Der Grund warum die PS3 so lange nicht gehackt wurde – nicht mal der Versuch unternommen wurde sie zu hacken – ist nach Auffassung von Michael Steil, der die Zeit-Tabelle präsentiert, dass die PS3 Linux von Anfang an unterstützt hat. Man konnte also seine eigenen Programme auf der Plattform antreiben und es gab keinen Grund sie wirklich zu hacken, um Linux und seine eigenen Programme darauf auszuführen. Das hatte aber so ziemlich immer den (Auffassung bleibt euch überlassen) Nebeneffekt, dass Piraterie-Fans das Ganze zweckentfremdeten und die Mechanismen so aushebelten, dass kopierte Spiele zum Laufen gebracht werden konnten, Apps nicht mehr bezahlt werden mussten, schwarzgesehen werden konnte, etc.

Neben Wii, Xbox 360 und PS3 gesellen sich auch iPod, iPhone, iPad und andere kleinere Geräte mit unterschiedlich starken Sicherheitssystemen und wie lange es gedauert hat, bis Linux oder Homebrew darauf lief. Von allen gelisteten Geräten sind bei der PS3 stolze 4 Jahre ins Land gezogen, bevor sie erfolgreich gehackt wurde (gemeint ist wahrscheinlich der erste Hack von Geohot). Andere Systeme wurden innerhalb von 12, 6 oder 4 Monaten, wieder andere sogar in weniger als 2 Wochen gehackt (das iPad innerhalb eines Tags, sehr zur Erheiterung des Publikums). Ausgehend vom Zeitpunkt nachdem die PS3 für Linux geschlossen wurde, aktualisiert Steil die Folie und es hat nur noch 12 Monate gedauert, bis die PS3 tatsächlich als gehackt galt.

In den darauf folgenden Folien wird der Prozessor und die Arbeitsweise des PS3-Systems erklärt. Die Erklärung des Prozessors ist selbst mir etwas zu hoch, aber ich versuch es so gut runter zu brechen, dass ihr es auch versteht: Die PS3 hat einen sehr bemerkenswerten Prozessor, der über 8 Kerne verfügt – PCs heutzutage haben meist nur 2 oder 4 – die alle mit ca. 3 GHz laufen. Eine solche Aufteilung in Kerne erlaubt es rechenintensive Vorgänge zu parallelisieren, d. h. große Probleme zu zerteilen und gleichmäßig auf alle Kerne zu verteilen, die dann parallel alle Teile des Problems abarbeiten und viel schneller mit dem Gesamtproblem fertig werden, als z. B. ein Prozessor mit nur einem einzigen Kern. Sony hat es allerdings so gedeichselt, dass der Prozessor nicht alle Daten preisgibt, die er tatsächlich verarbeitet, nur bestimmte Dinge, die Sony für bedenkenlos erachtet, können gelesen werden. Wie das ausgeführte System arbeitet wird ebenfalls erklärt.

PS3-System-Structure

Die Tabelle liest sich wie folgt: Auf der PS3 ausgeführte Spiele kommunizieren mit dem GameOS (LV2) um ihren Code auszuführen. Das GameOS kann mit dem Hypervisor (LV1) kommunizieren, um näher an die Hardware zu kommen. Der Hypervisor und das GameOS können uneingeschränkt mit den Kernen (SPUs) des PS3-Prozessors kommunizieren und ermöglichen so überhaupt erst, dass das Spiel läuft. Den Spielen selber ist der Zugriff auf den Prozessor allerdings verwehrt. Alle Anweisungen müssen entweder an das GameOS oder den Hypervisor gestellt werden.

Auch der Startprozess der PS3 ist kein Geheimnis. Mein Verständnis davon: Beim Einschalten der Konsole startet ein Bootloader, der den Prozessor „aufweckt“ und ihm sagt, dass er das System starten soll. Er startet den Hypervisor (siehe unten) und übergibt die Kontrolle der Hardware an ihn. Nach und nach wird Level 1 und schließlich Level 2 geladen. Bei jedem Ladevorgang wird geprüft, ob der Boot noch immer legitim ist. Ist das der Fall startet letztendlich das XMB, das der erste Bildschirm ist, den man normalerweise sieht, wenn man seine PS3 startet.

Danach ein Vergleich der Sicherheitsfeatures von vier Konsolen (Xbox, Wii, 360, PS3). Darin wird erklärt – ich fass das auch mal simpel zusammen –, dass alle Konsolen über einen Speicher im Prozessor selbst verfügen, der den Start der Konsole abwickelt. Dieser darf nicht verändert werden, da sonst das System nicht mehr startet. Außerdem werden Verschlüsslungs-Codes ebenfalls im Prozessor gelagert um den Zugang darauf zu erschweren. Außerdem verfügen alle Konsolen – mit Ausnahme der Wii – über eine Chain of Trust, die garantieren soll, dass vom Start der Konsole bis zum Abschalten diese Verschlüsselung fortlaufend eingehalten wird. Des Weiteren verfügen alle Wii, 360 und PS3 Konsolen über Keys die nur einmal vorkommen, also ein Key pro Konsole der auf keiner ein zweites Mal vorkommt. Auch alle ausführbaren Dateien auf Xbox, 360 und PS3 müssen digital signiert sein, damit sichergestellt ist, dass der Code vom Hersteller genehmigt wurde. Wii und PS3 haben einen weiteren „mini-Prozessor“ der vom Rest des Systems abgeschottet arbeitet und nur herangezogen wird, wenn die Signatur überprüft werden muss. Die Wii als einzige Konsole verschlüsselt zudem ganze Medien, d. h. dass die geringste Änderung am Medium dieses unbrauchbar macht, da sämtliche Codeüberprüfungen abgewiesen werden. Eine weitere Gemeinsamkeit der Wii und PS3 ist, dass sie ihre Festspeicher („Festplatte“) ebenfalls verschlüsseln, damit dieser nicht ohne weiteres ausgelesen werden kann. Ein weiterer Alleingang der Wii besteht darin, dass auch der Speicher ständig signiert wird und nicht geändert werden kann ohne den gesamten Speicher unbrauchbar zu machen. Die Xbox 360 hingegen verschlüsselt als einzige Konsole zudem noch ihren Arbeitsspeicher, was es unmöglich machen soll den Speicher durch DMA „Angriffe“ ohne Weiteres auszulesen. Was bei den Meldungen um den Geohot-Hack ebenfalls große Beachtung fand war der sogenannte Hypervisor. Ein Hypervisor ist so etwas wie ein „Aufpasser“, der die gesamten Zugriffe auf die Hardware überwachen, und nötigenfalls auch verbieten kann. Mit dem Hypervisor wollte Sony den Zugriff auf den RSX verhindern (Grafikeinheit der PS3). Damit wollte Sony allem Anschein nach präventiv Homebrew Games den Nährboden entziehen und dabei immer noch Linux erlauben. Obwohl es Versuche gab, trotzdem an den RSX ranzukommen, hat nichts davon zu einem Hack geführt. Dazu kommt noch, dass die PS3 zwischen einem User- und Kernelmode unterscheidet. Einfach formuliert dienen diese beiden Modi ebenfalls der Restriktion der Zugriffe auf die Hardware. Direkt an der Hardware sitzt der Hypervisor, darüber das GameOS und auf diesem die ausgeführten Spiele. Wieder als einzige Konsole setzt die Xbox 360 auf Anti-downgrade eFUSEs. Eine Anti-downgrade eFUSE soll das zurückkehren zu früheren Versionen der Systemsoftware unterbinden, indem innerhalb des Prozessors eine Sicherung zum „durchbrennen“ gebracht wird und somit ein downgrade schon allein von der Hardware verhindert wird.

Kleinere Hacks beinhalteten noch Daten von der verschlüsselten Festplatte auszulesen, was anscheinend niemandem größere Probleme bereitete. Der Erklärung zufolge schaute man sich nur die einzelnen Sektoren an, kopierte eine einfache Datei über die PS3 auf die Festplatte und las dann nochmal die Sektoren aus und verglich sie mit dem ersten Durchlauf. Bringt also so gesehen null die Festplatte zu verschlüsseln, da sich die Schlüssel gleichen und man trotzdem an die Daten rankommt. Das war aber nicht „The Big Deal“.

Zu der Zeit als die PS3 „slim“ rauskam existierten noch beide Revisionen nebeneinander. Der Unterschied war aber, dass die PS3 „fat“ OtherOS noch mit Firmware 3.00 unterstützte (die zum Launch der PS3 „slim“ auch für die „fat“ Modelle herausgegeben wurde), die „slim“ jedoch nicht. Und damit zog Sony die Aufmerksamkeit der Hacker auf das neue Modell, da der plötzliche Sinneswandel eine Motivation darstellte die OtherOS Funktion dennoch zu nutzen. Prägnante Medienpräsenz erlangte Geohot mit seinem Hack nachdem diese ganze Geschichte mit der „slim“ die Runde machte. Außerdem lehrt uns doch der Straisand-Effekt, genau dann keine große Vertuschungs-Aktion zu starten, wenn es niemanden kratzt. Denn Geohots Hack war viel zu unzuverlässig und kompliziert, als dass er in Massen umgesetzt werden konnte. Auch hier verweise ich wieder auf einen früheren Eintrag zum Thema: klick mich!

In Anbetracht der Tatsache, dass nur Hacker die OtherOS Funktionen nutzten (um ihre eigenen Programme auf der PS3 zum Laufen zu bringen) und Sony sich, nach Bekanntwerden des Geohot Hacks, dazu entschloss OtherOS auch von alten Konsolen zu entfernen, pinkelte Sony so ziemlich der ganzen Szene ans Bein – und das ist NIE eine gute Idee!

trophy-pissed-off

„Mit anderen Worten: Sie werden jetzt erst recht gehackt!“

– marcan, fail0verflow

Die Gruppe macht auch aus der Funktionsweise des PSJailbreaks kein Geheimnis, denn die Funktionsweise war hinreichend bekannt (was die über 9000 Klone heraufbeschwor). Ich versteh die Funktionsweise nicht vollständig, was ich aber verstanden habe ist, dass ein Bug in der Funktionsweise von USB ausgenutzt wird um einen Pufferüberlauf zu erzeugen der dafür sorgt, dass man letztendlich seinen eigenen Code auf LV2 Ebene ausführen kann (also auch mehr mit dem Prozessor der PS3 rumgurken kann, der ja letztendlich alles managen muss). Das GameOS ist also kompromittiert. Und da der Hypervisor eigentlich – und das ist irgendwie das lächerliche daran – „nur dasitzt und nett aussieht“ aber den Code nicht überprüft der Ausgeführt wird (im Gegensatz zur Xbox 360, bei der alles geprüft wird), sondern nur dazu implementiert wurde um die auf der PS3 ausgeführten Betriebssysteme abzuhalten direkt mit der Hardware zu hantieren, ist er aus sicherheitstechnischer Sicht vollkommen nutzlos. Trotzdem reichte das aus um Piraterie zu ermöglichen, da der Hypervisor nichts, wie ursprünglich angenommen, gegen unsignierten Code unternimmt. Es war also von Anfang an der falsche Hypervisor für eine Spielkonsole (sprich: geschlossenes System). Man muss also „nur 20 % des Sicherheitssystems knacken um 100 % das tun zu können, was Sony nicht will.“

Nachdem Sony sich dem Problem angenommen hatte (und aus der PSP-Szene bekannt ist) entschieden sich manche schlauen Köpfe dazu: „Okay, dann downgraden wir halt.“ Und auch die PS3 verfügt über einen sogenannten „Service Modus“ in den es möglich ist die komplette Systemsoftware zu überspielen – und das nicht nur mit älteren Firmwares. Realisiert wird das über einen USB-Dongle, den Sony in seinen Service-Centern benutzt, der die PS3 in diesen Modus versetzt und auf dem gleichzeitig eine Update-Datei für die Systemsoftware ist die installiert werden soll. So war es möglich auf ältere Firmwares zurück zu springen und wir waren wieder dort, wo wir waren, bevor Sony die Lücke geschlossen hatte.

fail0verflow hatte mit den geleakten Sachen aber etwas anderes angestellt. Da GameOS und OtherOS so ziemlich das gleiche waren schrieben sie „AsbestOS“, das das GameOS durch Linux ersetzt. Der einzige Unterschied: 3D und andere Funktionen bleiben dem GameOS vorbehalten. Das stört in diesem Fall aber nicht weiter. Und das ermöglicht sogar Linux auf der „slim“, obwohl die Funktion nie vorhanden war – also alles nur Fassade, die PS3 kann Linux so oder so. Und mit einem Linux-Unterbau war es ihnen auch möglich über Netzwerkzugriff über einen PC mit der Hardware bzw. dem Hypervisor zu spielen und die Funktionsweisen weiter in Erfahrung zu bringen. Dabei haben sie sich weiter angeschaut wie Sony seine ausführbaren Daten verschlüsselt. Eine direkte Veränderung dieser Daten hätte aber unweigerlich dazu geführt, dass die Daten nicht mehr ausführbar wären, da die Überprüfungen fehlschlagen würden. Sonys Idee dahinter war, dass man so nicht hinter deren Codekonstrukte kommen konnte. Da aber der Hypervisor, wie oben erwähnt, die Befehle an den Prozessor schlicht durchwinkt kann man ihn dazu benutzen die ausführbaren Daten entschlüsseln zu lassen. „Wir müssen daher nicht wissen wie es funktioniert, sondern wir lassen es uns einfach entschlüsseln. Die Verschleierung ist nutzlos.“

Um eben zu verhindern, dass ein Downgrade durchgeführt werden kann, sind Sperrlisten erforderlich. Sie überprüfen „Ist das überhaupt zugelassen zum Laden?“ und wenn nicht, dass startet das System einfach nicht. Und jetzt kommt der Witz: die PS3 setzt das beim Startvorgang gar nicht um! Die Sperrlisten sind in einem Puffer vorhanden, auf den man zugreifen kann, werden bei starten allerdings in einen Puffer kopiert der von Sony versteckt wird. An den versteckten Puffer für die Sperrlisten schließt gleich der Loader für LV2 an. Was würde jetzt passieren, wenn man in den Quellpuffer etwas ablegt, das die Größe des Zielpuffers übersteigt? *trommelwirbel* Richtig, der auf den Zielpuffer folgende Bootcode wird zerstört! Dadurch ist es möglich den Bootvorgang zu unterbrechen und interne Keys in einen Bereich zu kopieren, der normal zugänglich ist. Damit ist die „Chain of Trust“, die eigentlich sicherstellen sollte, dass nur zugelassener Code ausgeführt wird, schon von vornherein gesprengt – und das gilt für ALLE Konsolen die bisher verkauft wurden!

„This is Fail™. But it’s not Epic™ yet...“

– fail0verflow

Dieser Eintrag ist schon sehr lang, aber jetzt kommt der Teil, der überhaupt erst meine Motivation war so viel zu schreiben.

Wir wissen jetzt, dass Sony null Mühe daran vergeudet hat, sein System hinreichend durch Überprüfung der auszuführenden Daten zu schützen, sondern lediglich auf Verschleierung gesetzt hat – also das falsche Pferd. Aber es kommt noch besser: Nicht nur hat Sony keine schützenden Prüfungsroutinen implementiert, sondern auch noch bei der Verschlüsselung geschlampt – und das auf übelstem Niveau!

Die Grundidee der Verschlüsselung ist ja, dass die Informationen von zwei Stellen, die sie untereinander austauschen, ihr Geheimnis bleibt. Dazu bedient man sich heutzutage hochkomplexer mathematischer Formeln, auf die ich nicht weiter eingehen kann und auch nicht möchte, weil ich da selber nicht durchsteig. Das muss ich auch nicht und genauso wenig müsst ihr ein Mathegenie sein, um das Epic Fail hinter der ganzen Sache zu erkennen.

Zurück zur Grundidee der Verschlüsselung. Die beiden Stellen wissen jeweils, wie ihre Verschlüsselung aufgebaut ist und mit diesem Wissen kann der Sender die Information verschlüsseln und der Empfänger kann sie damit auch wieder entschlüsseln. Zwischenstellen verstehen die übertragene Information nicht, da sie zu diesem Zeitpunkt nur Kauderwelsch ist. Um es Mithörern so schwer wie möglich zu machen hinter den „Schlüssel“ zu kommen werden Algorithmen verwendet, die meistens auch eine „zufällige Zahl“ in die Formel mit einbeziehen. Dadurch wird sichergestellt, dass das Kauderwelsch immer anders aussieht und der Mithörer gar nicht lange Zeit hat, selbst zu versuchen, den „Schlüssel“ nachzumachen und an den Inhalt der Informationen zu gelangen – und das immer wieder, sodass es keinen Unterschied mehr macht, ob verschlüsselt oder nicht.

Und hier der versprochene Epic Fail: Sony benutzt als „Zufallszahl“ immer wieder dieselbe Zahl!

Selbst ich bekomme in der Berufsschule beigebracht, dass man zumindest das Datum hernehmen soll, um eine Zufallszahl zu bekommen, aber warum eine große Elektronik- und Computerfirma wie Sony selbst das nicht bei einem so teureren Produkt macht, wird mir für immer schleierhaft bleiben...

trophy-public-private-key

Nun sind die Schlüssel bekannt, mit denen man Sachen verschlüsseln kann und sie stimmen 1:1 mit dem überein was von Sony stammt. Und das alles nur, weil Sony gekleckert anstatt geklotzt hat und auch noch mein deswegen rumzicken zu müssen. „Das haben sie ziemlich verpfuscht, nun ja, eigentlich das ganze Teil.“ Die Brisanz wird erst richtig deutlich, wenn man sich verinnerlich, dass Sony die gedumpten Keys nicht per Patch ändern kann. Es würde nämlich bedeuten, dass entweder das System selbst oder die dafür angebotene Software nicht mehr funktioniert.

Sieht so aus als ob jemand gefeuert wird. Zwar niemand aus der Marketingabteilung für die PlayStation-Abteilung, die mindestens genauso inkompetent ist, aber vielleicht erinnert es Sony endlich mal daran, dass man das Geld mit guten Produkten und dazugehöriger guter Vermarktung macht und mit anständigen Sicherheitschecks verriegelt. Aber um Himmels Willen doch nicht mit... so was!

Weblinks

iPhone hacker publishes secret Sony PlayStation 3 key - BBC News
Signierte Homebrew-Software für Playstation 3 - heise.de
Ergebnisse des 27c3 - heise.de
Sony Takes Legal Action Against Infamous PS3 Hacker GeoHot - ps3news.com

1 Kommentar:

  1. *facepalm*

    So fantasievoll die auch mit dem Design waren (Kühlschrank-Toaster-Look und nachher Ich-kann nur-noch-eine-Scheibe-Toasten-Look)... Da war aber dann die Fantasie bei denen, die das teil verschlüsseln sollten, eindeutig ne runde spazieren. Und dann auch noch rumposaunen obwohl ja eh keiner hingeschaut hat. Als ob man mit was hinterm rücken ins Zimmer kommt und bevors einer sieht schon am gröhlen is: "Ich hab nix!!!"

    Da sag ich dann mal: Lieber gleich den Mund halten oder nicht hinterm rücken verstecken sondern sich übers Versteck vorher gedanken machen.

    AntwortenLöschen