Sześć dni awarii non stop wystarczyło, by odczytać tajemnice PlayStation 4

Strona główna Aktualności
image

O autorze

Chwilę po wydaniu publicznego exploita na konsolę PlayStation 4, działającego z całkiem świeżym firmware 4.05, jeden z polskich blogerów IT dumnie ogłosił, że czas szabrownictwa na stacjonarnych konsolach odszedł bezpowrotnie. Ciężko być jednak prorokiem w tych kwestiach teraz, gdy scena PS4 jest aktywniejsza niż kiedykolwiek. Tak, to prawda, że jailbreak i piractwo nie są ze sobą tożsame – ale czy nie było dokładnie tak samo w czasach PlayStation 3? Jedno jest pewne: przewaga jaką miało do tej pory Sony nad niezależnymi deweloperami topnieje z dnia na dzień. Zespół fail0verflow pokazał, jak zdołał zdobyć cały kernel konsoli, rekonstruując go w ciągu 6 dni z „okruszków” mierzących zaledwie 16 bajtów.

Sony samo o to się prosiło. W systemie FreeBSD, na którym bazuje system operacyjny PlayStation 4, gdy kernel wpadnie w panikę, tworzy zrzut stanu pamięci poprzez specjalną funkcję doadump, zapisującą niewielką ilość informacji o samym obrazie kernela na nośniku pamięci – informacji bezcennych dla deweloperów. Deweloperzy PlayStation 4 pozbyli się oryginalnej funkcji, w jej miejsce budując własną infrastrukturę obsługi błędów kernela.

Odpowiednikiem doadump jest tu funkcja mdbg_run_dump, która generuje aż 32 MB danych: stan kernela dla wszystkich procesów, wątków i obiektów pamięci, a do tego metadane o załadowanych bibliotekach. Wszystko to zostaje w prosty sposób zakodowane, a następnie zaszyfrowane przed zapisem na dysk. Z perspektywy napastnika, pragnącego wejrzeć w wewnętrzne procesy konsoli, to bardzo ładna infrastruktura.

Jak bowiem odkryli hakerzy z fail0verflow, wykorzystywany w niej tymczasowy bufor można wykorzystać jako „wyrocznię” do odczytywania danych z wskazanych adresów kernela, wykorzystując exploit w silniku przeglądarkowym webkit. Problem jedynie w tym, że do tak wygenerowanego zrzutu można dodawać jedynie po 16 bajtów na wątek. Naprawdę, trzeba być bardzo spostrzegawczym człowiekiem, by zauważyć, że 16 bajtów kernela zostaje umieszczonych w zrzucie pamięci po panice.

Zrzut oczywiście był zaszyfrowany… symetrycznym szyfrem, w dodatku z wykorzystaniem tych samych kluczy od czasu firmware 1.01 do całkiem świeżych wersji. W końcu ktoś w Sony musiał zauważyć, że to chyba złym pomysł by wykorzystywać te same symetryczne klucze, które ujawni jeden udany zrzut kernela i zaczął je zmieniać, ale to i tak niewiele zmieniło, po prostu trzeba było wcześniej pozyskać nowe klucze z pamięci.

Gotowy parser do odkodowania zrzutu został udostępniony dla innych deweloperów PlayStation, ale wiadomo, ręczne odczytanie kernela po 16 bajtów zajęłoby całą wieczność. Udało się jednak ten proces zautomatyzować, zawieszając konsolę w cyklu pięciominutowym, przy uruchomieniu jednocześnie 600 wątków (więcej się nie dało, przeglądarka się zawieszała). Nominalnie odczytanie całego kernela zajęłoby w ten sposób 11 dni, ale stosując bardziej rozważne wybieranie adresów w pamięci, team0verflow zdołał zejść do sześciu dni.

Jak jednak przejąć te dane ze zrzutu pomiędzy cyklami kolejnych zapisów na dysk? Tu pomógł exploit procesora EAP wbudowanego w mostek południowy Aeolia konsoli, stworzony przez hakera vpikhur. Pozwolił on na wykrywanie zrzutów na twardym dysku i przerzucanie ich po sieci do peceta. Dzięki temu – oraz pewnym sprzętowym modyfikacjom do sterowania zasilaczem konsoli przez sieć – wystarczyło uruchomić skrypt, który fail0verflow udostępniło wszystkim zainteresowanym.

Dopiero w firmware 4.50 Sony zrozumiało, że szyfrowanie symetryczne to słaby pomysł. Teraz by odszyfrować kernel ze zrzutów pamięci, trzeba znać klucz prywatny Sony, którego w pamięci już nie znajdziemy – szyfruje on klucz AES wykorzystywany do zaszyfrowania zrzutu. Przedstawione w artykule podejście nie działa więc już na nowych konsolach.

Więcej exploitów, większy potencjał piractwa

Co to w praktyce oznacza dla zwykłych użytkowników? Dysponując pełnym wglądem w kernel PlayStation 4, niezależni deweloperzy będą mogli znacznie łatwiej znaleźć w nim błędy i stworzyć działające exploity. Niewykluczone, że w ten sposób odkryte i upublicznione zostaną exploity działające na najnowszych wersjach kernela – w tym może i ten stworzony przez hakera Qwertuyoruiop, działający podobno nawet na firmware 5.03.

Oczywiście od jailbreaka do uruchamiania spiraconych gier droga wciąż daleka, ale należy przypomnieć, że i kwestii zabezpieczeń antypirackich konsola Sony poległa. Wydany dwa lata temu exploit hakera CTurt dla firmware 1.76 pozwolił na ucieczkę procesów z więzienia (jail) – mechanizmu FreeBSD używanego do ograniczenia ich dostępu do zasobów. We wrześniu tego roku haker zecoxao zaprezentował metodę uruchamiania na tak złamanym systemie kopii gier. Oznacza to, że w teorii posiadacze tych starych, nieosiągalnych już w praktyce na rynku konsol (na eBayu pojedyncze sztuki sprzedawane są za co najmniej 500 dolarów) mogą uruchamiać na nich 79 gier, dostępnych dla firmware 1.76 i wcześniejszych.

Zainteresowanych postępami sceny PlayStation 4 zapraszamy do śledzenia strony sce.party – tam dokumentowane są chronologicznie kamienie milowe na drodze do pełnego uwolnienia tej najpopularniejszej współczesnej konsoli.

© dobreprogramy