Все, что вы только что прочитали, должно быть каким-то образом защищено от "несанкционированного" доступа. Если вы хотите ознакомиться с тем, как компания Sony выполнила эту работу, то вам будет интересно.
Обзор фундамента безопасности
Многие части консоли уже обеспечивают функции безопасности, которые не требуют ручной реализации в ПО:
- SysCon: непонятный проприетарный чип (кратко упомянутый в процессе загрузки), который управляет линиями питания Cell, RSX и южного моста. Его EEPROM содержит записи, считываемые модулями ОС, чтобы определить, какие функции включены, а какие нет {{< cite "anti_piracy-qaflag]}}.
- Хоть я и использую слово "непонятный", но SysCon - это просто микроконтроллер, либо взятый с полки ARM7TDMI-S (именно так, PS3 имеет некоторые общие черты с Game Boy Advance и даже поздними версиями PS2) с поддержкой MagicGate, либо измененный вариант NEC 78K0R {{< cite "anti_piracy-syscon]}}. Больше всего интригует внутренняя прошивка SysCon.
- SysCon и Cell общаются друг с другом с помощью последовательного интерфейса (SPI), который подключается к компоненту TEST в Cell {{< cite "anti_piracy-cell_test]}}. TEST предоставляет множество функций отладки Cell, хотя SysCon подключается только к порту 'Pervasive logic', позволяя последнему управлять такими вещами, как питание или температура {{< cite"anti_piracy-pervasive]}}.
- Cell содержит скрытый ROM, в котором хранятся незашифрованные процедуры загрузки, не опасаясь посторонних глаз.
- Режимы привилегий Cell и изолированный режим SPE предотвращают доступ программ к несанкционированным ресурсам.
- Южный мост без проблем шифрует содержимое жесткого диска с помощью AES.
- Подсистема Blu-ray представляет собой еще одну крепость. Содержимое диска шифруется с помощью ключа, находящегося в области диска "ROM mask" (недоступной для обычных считывающих устройств){{< cite "anti_piracy-bdauth]}}.
Кроме того, Sony внедрила в ПО следующие средства защиты:
- Сложная цепочка доверия, которая начинается с незашифрованного загрузочного ROM в Cell и заканчивается графическим интерфейсом пользователя (XMB), который загружает только зашифрованные двоичные файлы (Sony) под ядро и гипервизор.
- Цепочка доверия реализует несколько алгоритмов шифрования, включая асимметричные, такие как RSA и ECDSA, и симметричные, такие как AES; в сочетании с HMAC и SHA-1 (для подтверждения целостности данных).
- Некоторые ключи шифрования изготавливаются в процессе производства. Это означит, что если хакеры найдут и выложат эти ключи, они не будут работать на других консолях. За это приходится расплачиваться тем, что Sony не может исправлять ПО, зашифрованное этими ключами, после того как консоль покинет завод.
- Эти специальные ключи используются для
bootldrиmetldr(ранние стадии загрузки).
- Эти специальные ключи используются для
- Игры должны обращаться к ядру для доступа к железу, которое, в свою очередь, обращается к гипервизору. Этот "лук абстракции" не позволяет игровым эксплойтам повышать привилегии, теоретически.
Поражение
Вы видели, на что способна эта консоль, ожидали ли вы, что хакеры будут довольствоваться ограниченными возможностями OtherOS? Думаю, Sony тоже не ожидала. Компания изо всех сил старалась защитить некоторые области, оставляя другие полузакрытыми, чем позже воспользовались хакеры.
Давайте посмотрим, как некоторые из её крепостей были взломаны независимыми хакерами по всему миру. Следует помнить, что сообщество взломщиков PS3 было очень активным, каждый год выпуская множество инструментов и документации. Итак, я остановлюсь на нескольких вехах, которые проложили путь к притоку контента и разработке хоумбрю, но больше информации вы найдете на PS3History .
Обход гипервизора
В 2010 году, после трех лет затишья на хакерской сцене, в сообществе произошел поворот к лучшему. Джордж Хотц - это хакер, известный тем, что ранее разблокировал первую модель iPhone (также известную как "2G"), чтобы она могла работать с любой сетью (первоначально только с Cingular/AT&T). Он сумел прочитать и записывать защищенные области в памяти консоли, не будучи остановленным гипервизором. Затем он опубликовал свой эксплойт вместе с кратким описанием в своем блоге .
Эксплойт требует двух материалов: установка Linux под управлением OtherOS (для выполнения произвольного, но ограниченного кода) и наличие внешнего глитчера, подключенного к шине XDR (для общения с ОЗУ). Короче говоря, гипервизор использует хэш-таблицу, хранящуюся в ОЗУ, для каталогизации адресов памяти вместе с их уровнями привилегий. Поэтому пользовательские программы не могут получить доступ к защищенным областям памяти. Атака работает путем нарушения целостности такой таблицы, чтобы иметь возможность писать поверх нее, а затем использовать эту привилегию для изменения записей, чтобы предоставить текущей программе доступ к каждому углу в памяти.
В итоге Хотц обнаружил, что в Linux/OtherOS программы могут запрашивать у гипервизора множество блоков памяти, указывающих на один и тот же физический адрес. Если программа деаллоцирует их в то время, когда на шине XDR присутствуют внешние помехи (из-за глитчера, посылающего электрические импульсы), процесс деаллокации завершается наполовину . Как следствие, хэш-таблица гипервизора (находящаяся в ОЗУ) все еще содержит запись о выделенных адресах, но в то же время он считает, что это пространство было освобождено. Затем эксплоит Хотца запрашивает дополнительные блоки, поэтому гипервизор расширяет свою таблицу новыми записями. Этот процесс продолжается до тех пор, пока запись в хэш-таблице не перекрывает место в памяти блока, который должен был быть деаллоцирован. Поскольку в хэш-таблице сохранилась старая запись, дающая пользователю доступ к этому адресу, гипервизор в итоге предоставляет к изменению записи в хэш-таблице! Таким образом, эксплойт изменяет запись, чтобы расширить доступ ко всему пространству памяти.
Хоть этот эксплойт и требовал использования среды Linux, работающей из под OtherOS, он стал огромным шагом к дальнейшему реверс-инжинирингу и исследовательским проектам. Теперь хакеры получили возможность исследовать критические области системы, которые изначально были недоступны. Стоит отметить, что в это же время Sony выпустила обновление ПО версии 3.21, которое убирало OtherOS. Можно было бы подумать, что это удержит хакеров от продолжения работы, но это только дало им больше причин ускорить её.
PSJailbreak
Позже, в 2010 году, группа под названием 'PS Jailbreak' анонсировала (и позже выпустила) уникальное решение для запуска хоумбрю непосредственно из встроенной оболочки консоли (XMB, из под GameOS) без вмешательства в железо консоли. И все это не понравилось Sony, которая вскоре пойдёт юридическим путём, чтобы заблокировать продажи этого продукта.
'PS Jailbreak' состоял из USB-флешки, который подключался к переднему USB-порту перед включением консоли. Затем пользователь должен был нажать кнопку питания, после этого - кнопку извлечения. Если инструкции были выполнены успешно, то пользователь видел обычный интерфейс XMB, но с добавленной опцией 'Install PKG' и нескольких самодельных приложений, созданных для записи игр Blu-ray на жесткий диск и их последующей загрузки.
За кулисами эта флешка выполняет огромное количество работы, которую можно разделить на две группы :
- USB-эксплойт: после включения консоли ключ обманывает систему, заставляя ее думать, что она подключена к USB-хабу со шестью портами. Потом он выполняет сложную последовательность USB-команд, пока не достигнет переполнения кучи и эскалации доступа к ядру PS3 (уровень 2). Затем приступает к выполнению полезной нагрузки (пейлоада).
- Payload: это еще один сложный пакет, который исправляет оригинальную оболочку, чтобы включить скрытые функции, доступные только на отладочных устройствах (кнопка 'Install PKG'). Он отключает проверку подписи (для загрузки произвольного модуля или пакета) и перенаправляет команды Blu-ray на жесткий диск (для загрузки игр). Тот факт, что эта программа может изменить так много на уровне ядра, заставляет задуматься, а чем же хорош гипервизор?
- В дополнение к этому M4j0r позже сказал: "Интересно, что он даже не использует код Sony, эта часть lv2 была написана Logitech, и разработчики этого эксплойта могли иметь доступ к исходному коду (благодаря взлому 2008 года)." .
Впоследствии этот продукт был взломан другими сообществами, и вскоре после этого появились клоны с открытым исходным кодом (например, PS Groove), которые снимали многие ограничения (например, пользователи теперь могли отключать устройство от сети после завершения эксплойта). Некоторые форки были даже развернуты на калькуляторе Texas Instruments . В любом случае, Sony действовала быстро, выпустив обновление ПО версии 3.42, чтобы удалить эту золотую жилу , хотя дверь для хоумбрю уже была открыта.
Достойны упоминания
Прежде чем я наконец-то расскажу о главном достижении хоумбрю-сцены PS3, позвольте мне описать вам пару методов, которые были разработаны примерно в то же время:
- USB Jig: еще один USB-накопитель, на этот раз запрограммированный на то, чтобы обманом заставить консоль войти в режим Factory Service Mode, предназначенный только для обслуживания консоли авторизованным персоналом. Программа, встроенная в Jig, повторяет программу, которую Sony предоставляет своим инженерам. Основное преимущество сервисного режима заключается в возможности понизить версию консоли до совместимой с PSJailbreak версии. Пейлоад также был доступен в виде хоумбрю-приложения для PSP {{< cite "anti_piracy-pspjig]}}. В ответ Sony внесла исправления в сервисный режим, чтобы затруднить его восстановление в"нормальный" режим или изменение прошивки, отговаривая пользователей от его использования.
- Эмулятор оптического диска (Optical Disc Emulator, ODE): серия аппаратных продуктов, которые поставлялись различными компаниями (Cobra, E3 и прочими). Они вмешивались не в прошивку консоли, а в интерфейс SATA/PATA диска Blu-ray. ODE - это платы, которые устанавливаются между материнской платой и приводом Blu-ray, выступая в роли посредника. Он обманывает консоль, заставляя ее думать, что на диске находится игра, но вместо этого загружает образ диска с внешнего USB-накопителя. История взлома PS3 содержит длинные промежутки "непрошиваемых периодов", когда для новых консолей не было доступных программных эксплойтов. Итак, за немалую цену ODE заполнили этот пробел.
- Даунгрейдер: поскольку Sony продолжала устранять уязвимости с помощью новых обновлений ПО, у пользователей не осталось другого выбора, кроме как понизить версию прошивки с возможностью запуска эксплоита. Таким образом, появились компании, подобные E3, которые поставляли специализированное оборудование, позволяющее переписать систему консоли "трудным способом". То есть, путем прямой прошивки чипов NAND или NOR. По понятным причинам этот метод требует большего мастерства и терпения по сравнению с USB-методом.
- Изолированные утечки: эта утечка предназначена для исследовательских целей, в отличие от "функций", которые увидит пользователь (но, тем не менее, она необходима для дальнейшего развития). В любом случае, данные об отзыве (используемые для внесения скомпрометированных сертификатов в черный список) анализируются
lv2ldr, верно? Было обнаружено, что этот процесс содержит множество уязвимостей. Во-первых, по необъяснимой причине, данные отзыва могут быть записаны в пользовательской среде. Во-вторых, анализатор не выполняет проверку границ для извлечённых данных (и снова здорова!). Поэтому хакерам удалось создать пользовательские данные отзыва, которые могли привести к переполнению буфера и, в конечном итоге, позволить им выполнить произвольный код внутри изолированного режима SPU. Это позволило им получить доступ к конфиденциальным данным (т.е. ключам), которые предположительно были защищены от остальной части системы {{< cite "operating_system-psxplace]}}.
Падение шифрования
Как и в саге с PSP, первоначальные эксплойты требовали больших усилий и легко исправлялись Sony, что привело к невыгодной игре в кошки-мышки. Однако, как и в случае с PSP, это был вопрос времени, когда какое-нибудь открытие нарушит фундамент безопасности этой системы: её цепочку доверия.
В 2011 году Джордж Хотц (вместе с командой fail0verflow) опубликовал еще одно открытие - закрытые ключи шифрования, которые Sony использует для подписи двоичных файлов, выполняемых metldr. Бинарные файлы, загружаемые на этапе загрузки, подписываются ключом ECDSA. Будучи асимметричной системой шифрования, это означает, что любой, кто владеет закрытым ключом (Sony, а теперь и другие), может зашифровать и подписать двоичные файлы, следовательно, в глазах metldr они будут выглядеть 'подлинными'. Поскольку metldr является третьим этапом загрузки перед загрузкой lv1 (гипервизора), это означает, что хакеры смогут создавать собственные гипервизор, ядро и всё, что находится под ними. Кроме того, любая PlayStation 3 на рынке будет думать, что пользовательские двоичные файлы являются подлинными. В общем, это эксплойт в стиле батарейки Пандоры, но полностью программный.
Открытие этого ключа, которое должно было быть вычислительно невыполнимым, стало возможным благодаря тому, что считается 'ошибкой' в реализации алгоритма ECDSA компанией Sony. Короче говоря, математическая формула, используемая для ECDSA, использует случайное значение, которое Sony никогда не меняла во всех файлах обновлений, которые они распространяли , тем самым облегчая решение других переменных, что в итоге и произошло.
Последствия этого открытия описаны в следующих параграфах.
Эра кастомных прошивок (CFW)
Взлом metldr означал, что теперь все могли создавать 'официальные' системы для PS3, что привело к появлению 'разновидностей' GameOS, которые различные сообщества выпускали с различными настройками. Эти системы представляли собой модификации официальных файлов прошивки Sony (которые она распространяла в виде обновлений) и пересобирались с использованием утечки ключей, поэтому их можно было установить куда угодно. Результат получил название кастомной прошивки (Custom Firmware, CFW) и стал методом взлома этой консоли де-факто, пока Sony не приняла жесткие меры.

Моя установленная CFW с открытым 'меню VSH'. Этот вариант прошивки (под названием 'Rebug') также позволяет мне превратить консоль в отладочную станцию (обратите внимание на IP-адрес в правом нижнем углу, его нужно ввести в отладчике, чтобы подключиться к запущенному процессу) и возиться со своими хоумбрю.
Тем временем в сети появилось множество CFW с разными названиями (например, 'Rebug', 'Ferrox' и прочее), и они содержали такие настройки, как :
- Отключение проверки подписи для любого установленного или устанавливаемого модуля.
- Разрешение чтения и записи (классический peek and poke) по любому адресу памяти, используя либо гипервизор (уровень 1), либо ядро (уровень 2).
- Активация скрытых функций отладки для установки модулей, упакованных в виде файлов 'pkg'. Для работы в среде CFW их не нужно было подписывать ключами Sony.
- Включение возможности монтирования образа диска в качестве виртуального диска Blu-ray.
- Восстановление OtherOS и даже его усовершенствование за счет снятия ограничений, накладываемых гипервизором. Результат был назван OtherOS++.
- Запись базы данных в EEPROM чипа Syscon, позволяющая установить любую версию системы по выбору. Это также известно как QA Toggling.
- Изменение стиля XMB (например, удаление предупреждения об эпилепсии, разрешение делать скриншоты в игре и так далее).
Есть и мой любимый вариант: привнести отладочные функции тест-кита, позволяя любой розничной консоли стать отладочной станцией. Это может быть сделано установкой либо CFW с возможностями отладки, либо CFW, который может преобразовать розничную консоль ('CEX') в отладочную модель ('DEX') путем изменения специфических для консоли данных во флэш-памяти.
Крепкий ответ от Sony
Аналогично событиям, произошедшим после появления CFW для PSP, Sony ответила двумя обновлениями системы безопасности:
Со стороны ПО Sony выпустила два системных обновления, которые улучшили систему безопасности:
- В версии
3.56двоичные файлы подписываются новыми ключами шифрования, устойчивыми к предыдущему открытию ECSDA {{< cite "anti_piracy-keys" >}}. Из-за этого создатели CFW не могут настроить новые двоичные файлы (поскольку у них нет закрытых ключей для повторного шифрования). Кроме того, поставляется новая версия приложения 'system updater', которое вводит новые сертификаты в файлы обновления системы (PS3UPDAT.PUP). Это означает, что даже если хакерам удастся собрать новый CFW, только консоли с версией системы3.55или ниже смогут установить его {{< cite "anti_piracy-spkg]}}. - Позже, обновление системы
3.60изменило процесс загрузки. Оно упразднилоmetldrи переместилоlv0на место загрузчиков (lv1ldr,lv2ldr,appldrиisoldr). В целом это означало, что хакеры не могли модифицировать новые системные файлы без предварительного взломаlv0(нахождения его закрытого ключа).- В конце концов, это произошло в конце 2012 года, когда команда "Три Мушкетера" (The Three Musketeers) опубликовала ключи lv0 , что открыло путь к новым CFW, сделанным на основе версий системы, более новых, чем
3.55. Хотя, из-за вышеупомянутых изменений в программе обновления, установить её могут только пользователи системы версии3.55или ниже (включая любые CFW с отключенной проверкой подписи).
- В конце концов, это произошло в конце 2012 года, когда команда "Три Мушкетера" (The Three Musketeers) опубликовала ключи lv0 , что открыло путь к новым CFW, сделанным на основе версий системы, более новых, чем
С аппаратной стороны, не только последующие модели PS3 (поздние CECH-25xxx, CECH-3xxx и CECH-4xxx) поставляются с версией системы выше 3.55, но и содержат другой вариант bootldr/lv0ldr (называемый lv0ldr.1), который не только расшифровывает и загружает lv0, но и извлекает новый системный файл lv0.2. Последний содержит метаданные о lv0 , чтобы удостовериться, что lv0 не был подделан. lv0.2 подписывается новым ключом (также неуязвимым к предыдущему открытию ECDSA), что не позволяет хакерам получить контроль над цепочкой загрузки.
По сей день эти модели не могут запустить CFW, поэтому их прозвали непрошиваемыми. Однако они могут работать с 'гибридной прошивкой' (HFW), о которой мы поговорим позже.
Со временем количество консолей, совместимых с CFW, только уменьшалось. Следовательно, PS3, которые не обновлялись выше 3.55, стали своего рода реликвиями. В то же время резко возрос спрос на альтернативы, такие как даунгрейдеры (для возврата к версии системы 3.55 на старых моделях) и ODE (для запуска пиратских игр на новых моделях).
Возрождение хоумбрю
После длительного периода ожидания для пользователей, которые пропустили окно для установки CFW, в конце 2017 года команда хакеров выпустила PS3Xploit, коллекцию эксплойтов и утилит , которая вернула возможность установки CFW на старые модели без необходимости дорогостоящего даунгрейдера (и навыков работы с ним).
Основной пейлоад PS3Xploit полностью повторяет работу аппаратного даунгрейдера (исправление файлов CoreOS), только программным путём. Он работает следующим образом:
- Отправной точкой является интернет-браузер XMB, построенный на базе Webkit. PS3Xploit использует Javascript для получения возможности выполнения произвольного кода в пользовательском пространстве системы (и вне среды Javascript). Чтобы запустить эту программу, пользователю достаточно открыть родной веб-браузер XMB, ввести URL-адрес, указывающий на хост PS3Xploit, и позволить ему сделать свою работу.
- Так получилось, что ядро предоставляет системные вызовы, которые могут быть использованы для перезаписи файлов системы во флэш-памяти. Кроме того, оболочка (XMB) и ее плагины хранят в памяти процедуры, которые используют эти вызовы.
- PS3Xploit не может вызвать эти системные вызовы напрямую из-за защиты "no-execute" гипервизора, не позволяющей эксплойту загружать новый код в пользовательскую среду. Однако он может найти способ перезаписать флэш-память, "позаимствовав" процедуры у оболочки.
- Следовательно, PS3Xploit модифицирует стек выполнения Webkit так, чтобы перенаправить выполнение на подпрограммы оболочки. Этот тип атаки (повреждение стека для перенаправления выполнения на другой код, находящийся в памяти) называется программированием, ориентированным на возврат (ROP), и он очень популярен в жанре InfoSec. Одним из способов борьбы с ним - реализация рандомизации расположения адресного пространства (ASLR), которая затрудняет угадывание расположения процедур (называемых гаджетами). Но, как вы можете догадаться, в гипервизоре Sony отсутствует ASLR.
- Наконец, эти системные вызовы запускаются с параметрами PS3Xploit, и таким образом они заменяют файлы CoreOS (первая часть операционной системы, хранящаяся во флэш-памяти) на исправленные {{< cite "anti_piracy-flash_writer]}}.
- Теперь консоль способна устанавливать неофициальные обновления программного обеспечения, и пользователь может этим воспользоваться для установки кастомной прошивки. Правда, пока что он не может понизить версию системы, но после установки актуального CFW пользователь может установить дополнительные утилиты для понижения версии системы, и если захочет, и установить более улучшенную CFW.
Как видите, этот подарок с небес вернул кастомные прошивки в центр внимания и сделал аппаратные даунгрейдеры и ODE устаревшими. С другой стороны, для тех моделей, которые не могли установить CFW любым способом (непрошиваемые), позже командой был предложен другой пакет эксплойтов, PS3Hen. Он фокусировался на включении подмножества функций CFW (включая возможность запуска хоумбрю). Этот пакет устанавливает запись в XMB, и пользователь должен запускать его каждый раз при включении консоли, чтобы снова активировать хоумбрю.
Частичный ответ Sony
К счастью, Sony предприняла лишь небольшие шаги, чтобы заблокировать PS3Xploit (возможно, потому, что такой поворот событий произошел спустя годы после того, как преемник PS3, PlayStation 4, появился в магазинах). Они выпустили несколько системных обновлений, которые не исправили эту цепочку эксплойтов, но удалили процедуру, используемую в Webkit для начальной загрузки цепочки. В ответ хакеры опубликовали слегка измененные обновления ПО, которые содержали восставленную точку входа (и почему-то их не нужно было заново подписывать) . Эти пользовательские обновления были названы Гибридной прошивкой (Hybrid firmware, HFW). На момент написания этой статьи, они являются единственной возможностью запускать хоумбрю на непрошиваемых моделях.
И на этом заканчивается сага о борьбе с пиратством и хоумбрю. По моему скромному мнению, я не думаю, что Sony заинтересована в том, чтобы прикладывать больше усилий для защиты этой консоли. Поэтому я бы не ожидал новых игр в кошки-мышки в этой области.