« Архитектура PlayStation 3 (index)

Архитектура PlayStation 3

Chapter 9: Борьба с пиратством и хоумбрю


Содержание

  1. Обзор фундамента безопасности
  2. Поражение
    1. Обход гипервизора
    2. PSJailbreak
    3. Достойны упоминания
    4. Падение шифрования
  3. Эра кастомных прошивок (CFW)
    1. Крепкий ответ от Sony
    2. Возрождение хоумбрю
    3. Частичный ответ Sony

Все, что вы только что прочитали, должно быть каким-то образом защищено от "несанкционированного" доступа. Если вы хотите ознакомиться с тем, как компания Sony выполнила эту работу, то вам будет интересно.

Обзор фундамента безопасности

Многие части консоли уже обеспечивают функции безопасности, которые не требуют ручной реализации в ПО:

Кроме того, Sony внедрила в ПО следующие средства защиты:

Поражение

Вы видели, на что способна эта консоль, ожидали ли вы, что хакеры будут довольствоваться ограниченными возможностями 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 на жесткий диск и их последующей загрузки.

За кулисами эта флешка выполняет огромное количество работы, которую можно разделить на две группы :

  1. USB-эксплойт: после включения консоли ключ обманывает систему, заставляя ее думать, что она подключена к USB-хабу со шестью портами. Потом он выполняет сложную последовательность USB-команд, пока не достигнет переполнения кучи и эскалации доступа к ядру PS3 (уровень 2). Затем приступает к выполнению полезной нагрузки (пейлоада).
  2. Payload: это еще один сложный пакет, который исправляет оригинальную оболочку, чтобы включить скрытые функции, доступные только на отладочных устройствах (кнопка 'Install PKG'). Он отключает проверку подписи (для загрузки произвольного модуля или пакета) и перенаправляет команды Blu-ray на жесткий диск (для загрузки игр). Тот факт, что эта программа может изменить так много на уровне ядра, заставляет задуматься, а чем же хорош гипервизор?
    • В дополнение к этому M4j0r позже сказал: "Интересно, что он даже не использует код Sony, эта часть lv2 была написана Logitech, и разработчики этого эксплойта могли иметь доступ к исходному коду (благодаря взлому 2008 года)." .

Впоследствии этот продукт был взломан другими сообществами, и вскоре после этого появились клоны с открытым исходным кодом (например, PS Groove), которые снимали многие ограничения (например, пользователи теперь могли отключать устройство от сети после завершения эксплойта). Некоторые форки были даже развернуты на калькуляторе Texas Instruments . В любом случае, Sony действовала быстро, выпустив обновление ПО версии 3.42, чтобы удалить эту золотую жилу , хотя дверь для хоумбрю уже была открыта.

Достойны упоминания

Прежде чем я наконец-то расскажу о главном достижении хоумбрю-сцены PS3, позвольте мне описать вам пару методов, которые были разработаны примерно в то же время:

Падение шифрования

Как и в саге с 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 не приняла жесткие меры.

Image
Моя установленная CFW с открытым 'меню VSH'. Этот вариант прошивки (под названием 'Rebug') также позволяет мне превратить консоль в отладочную станцию (обратите внимание на IP-адрес в правом нижнем углу, его нужно ввести в отладчике, чтобы подключиться к запущенному процессу) и возиться со своими хоумбрю.

Тем временем в сети появилось множество CFW с разными названиями (например, 'Rebug', 'Ferrox' и прочее), и они содержали такие настройки, как :

Есть и мой любимый вариант: привнести отладочные функции тест-кита, позволяя любой розничной консоли стать отладочной станцией. Это может быть сделано установкой либо CFW с возможностями отладки, либо CFW, который может преобразовать розничную консоль ('CEX') в отладочную модель ('DEX') путем изменения специфических для консоли данных во флэш-памяти.

Крепкий ответ от Sony

Аналогично событиям, произошедшим после появления CFW для PSP, Sony ответила двумя обновлениями системы безопасности:

Со стороны ПО Sony выпустила два системных обновления, которые улучшили систему безопасности:

С аппаратной стороны, не только последующие модели 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), только программным путём. Он работает следующим образом:

  1. Отправной точкой является интернет-браузер XMB, построенный на базе Webkit. PS3Xploit использует Javascript для получения возможности выполнения произвольного кода в пользовательском пространстве системы (и вне среды Javascript). Чтобы запустить эту программу, пользователю достаточно открыть родной веб-браузер XMB, ввести URL-адрес, указывающий на хост PS3Xploit, и позволить ему сделать свою работу.
  2. Так получилось, что ядро предоставляет системные вызовы, которые могут быть использованы для перезаписи файлов системы во флэш-памяти. Кроме того, оболочка (XMB) и ее плагины хранят в памяти процедуры, которые используют эти вызовы.
  3. PS3Xploit не может вызвать эти системные вызовы напрямую из-за защиты "no-execute" гипервизора, не позволяющей эксплойту загружать новый код в пользовательскую среду. Однако он может найти способ перезаписать флэш-память, "позаимствовав" процедуры у оболочки.
  4. Следовательно, PS3Xploit модифицирует стек выполнения Webkit так, чтобы перенаправить выполнение на подпрограммы оболочки. Этот тип атаки (повреждение стека для перенаправления выполнения на другой код, находящийся в памяти) называется программированием, ориентированным на возврат (ROP), и он очень популярен в жанре InfoSec. Одним из способов борьбы с ним - реализация рандомизации расположения адресного пространства (ASLR), которая затрудняет угадывание расположения процедур (называемых гаджетами). Но, как вы можете догадаться, в гипервизоре Sony отсутствует ASLR.
  5. Наконец, эти системные вызовы запускаются с параметрами PS3Xploit, и таким образом они заменяют файлы CoreOS (первая часть операционной системы, хранящаяся во флэш-памяти) на исправленные {{< cite "anti_piracy-flash_writer]}}.
  6. Теперь консоль способна устанавливать неофициальные обновления программного обеспечения, и пользователь может этим воспользоваться для установки кастомной прошивки. Правда, пока что он не может понизить версию системы, но после установки актуального CFW пользователь может установить дополнительные утилиты для понижения версии системы, и если захочет, и установить более улучшенную CFW.

Как видите, этот подарок с небес вернул кастомные прошивки в центр внимания и сделал аппаратные даунгрейдеры и ODE устаревшими. С другой стороны, для тех моделей, которые не могли установить CFW любым способом (непрошиваемые), позже командой был предложен другой пакет эксплойтов, PS3Hen. Он фокусировался на включении подмножества функций CFW (включая возможность запуска хоумбрю). Этот пакет устанавливает запись в XMB, и пользователь должен запускать его каждый раз при включении консоли, чтобы снова активировать хоумбрю.

Частичный ответ Sony

К счастью, Sony предприняла лишь небольшие шаги, чтобы заблокировать PS3Xploit (возможно, потому, что такой поворот событий произошел спустя годы после того, как преемник PS3, PlayStation 4, появился в магазинах). Они выпустили несколько системных обновлений, которые не исправили эту цепочку эксплойтов, но удалили процедуру, используемую в Webkit для начальной загрузки цепочки. В ответ хакеры опубликовали слегка измененные обновления ПО, которые содержали восставленную точку входа (и почему-то их не нужно было заново подписывать) . Эти пользовательские обновления были названы Гибридной прошивкой (Hybrid firmware, HFW). На момент написания этой статьи, они являются единственной возможностью запускать хоумбрю на непрошиваемых моделях.

И на этом заканчивается сага о борьбе с пиратством и хоумбрю. По моему скромному мнению, я не думаю, что Sony заинтересована в том, чтобы прикладывать больше усилий для защиты этой консоли. Поэтому я бы не ожидал новых игр в кошки-мышки в этой области.


Previous: 8. Игры

Next: 10. Вот и всё, ребята


Rodrigo Copetti © 2026 RSS Feed

Переключиться на современную версию

Домашняя страница · Статьи · Поддержка · Об авторе · О сайте