[Перевод] Архитектура PlayStation 3, часть 4: Борьба с пиратством
PlayStation 3 Reference Tool (модель DECR-1000), которая использовалась при разработке игр.
→ Часть 1: Cell
→ Часть 2: RSX
→ Часть 3: Три «ОС»
→ Часть 4: Борьба с пиратством
Примечание переводчика:
Эта часть является последней в данной серии переводов. По сути, осталось рассказать про игры (а точнее, их разработку и распространение) и борьбу с пиратством (для многих, пожалуй, самое интересное). Поэтому оба раздела были объединены в эту часть, чтобы весь переведенный материал не пропадал впустую.
Приятного чтения!
7. Игры
Этот раздел охватывает темы, связанные с разработкой, распространением и обслуживанием игр.
7.1. Экосистема разработки ПО
Поскольку эта консоль объединяет в себе технологии различных компаний, включая продукты, которые уже продаются на других рынках (например, GPU-линейка GeForce 7 от Nvidia для ПК), то разработчики были завалены множеством различных инструментов для разработки своего ПО. Это не означает, что разработка была легкой, но это было лучше того, что было во времена ассемблера.
Для программирования Cell IBM и Sony выпустили отдельные пакеты разработки. IBM делала пакеты для свободных сред, таких как Linux (и OtherOS). Инструменты Sony, напротив, явно нацелены на GameOS в качестве единственной среды выполнения.
IBM бесплатно распространяла пакет IBM Cell SDK [66]. Он включал в себя набор инструментов GCC, модифицированных для создания бинарных файлов для PPU и SPU. Набор позволял разрабатывать на C, C++, Fortran и языке ассемблера. Набор также являлся кросс-платформенным, позволяя компилировать код с другого оборудования (например, с ПК на x86). SDK также включал в себя библиотеки низкого уровня для облегчения математических SIMD-операций и управления SPU-PPU. Наконец, он включал в себя форк среды разработки Eclipse.
Чтобы облегчить сложность разработки Cell, IBM также разработала ещё один (но недолговечный) компилятор XLCL, который компилирует код OpenCL (вариант C/C++ для параллельных вычислений) для PPU и SPU. Он распространялся только через канал IBM Alphawork, означая, что компилятор оставался экспериментальным.
А что насчет Sony? По аналогии с SDK для PSP, она поставляла девкиты (во множестве вариантов с разными размерами и улучшениями) и пакет ПО, состоящий из компиляторов, библиотек и отладчиков, которые использовали Visual Studio 2008 (а позже и 2010) в качестве IDE [67].
Поскольку Sony поддерживала только PS3, их SDK включал такой же набор инструментов GCC, но дополненный тоннами библиотек для графических задач, обработки аудио и операций ввода-вывода. В случае с графикой для RSX, Sony предоставляла библиотеки GCM для создания низкоуровневых команд и psGL, построенная поверх GCM для обеспечения OpenGL ES API.
Для написания шейдеров Nvidia предоставляла Cg. Это компилятор шейдеров, который парсирует язык, похожий на GLSL (язык шейдеров, созданный для OpenGL).
7.1.1. Разработка без коммерческой лицензии
С появлением хоумбрю-приложений (работающих на GameOS, а не на OtherOS) были созданы новые наборы SDK с открытым исходным кодом. Сделано это для обхода зависимости от библиотек Sony, защищенных авторским правом, чтобы, следовательно, предотвратить потенциальные судебные разбирательства.
Одним из таких примеров является PSL1GHT SDK, который используется в сочетании с ps3toolchain [68]. Всё это обеспечивает полный набор средств разработки, готовый для создания легальных хоумбрю-приложений (хотя для этого требуется модифицированная / взломанная консоль с отключенной проверкой подписи).
В 2018 году я создал собственный набор на основе ps3toolchain, но распространяемый в виде Docker-контейнера [69]. Чтобы самому не компилировать ps3toolchain, можно было загрузить мою предварительно скомпилированную среду (сэкономив много времени на компиляцию). Контейнер также содержит множество инструментов, таких как компилятор Cg от Nvidia, чтобы смягчить проблемы с зависимостями, которые я обнаружил во время экспериментов с проектом на базе PSL1GHT. В итоге это был забавный эксперимент, который помог мне узнать больше о среде разработки.
7.1.2. Аутсорсинг разработки
Стоит отметить, что за это время возросла популярность своеобразной бизнес-модели: игровые движки.
Вместо того чтобы тратить время и деньги на разработку игры с нуля, почему бы не купить готовую кодовую базу от других компаний и не создать игру на её основе? Это то, что предполагали игровые студии, такие как Epic Games [70]. Помимо продажи популярных игр, таких как Unreal Tournament 3, студия лицензировала урезанную версию игры (без ассетов) другим разработчикам. Она была упакована и названа «Unreal Engine 3».
Вкратце, игровые движки берут на себя всё фундаментальные задачи, такие как физика, освещение и прочее. Разработчикам остается только добавить свой собственный контент (скрипты, текстуры, модели, звуки и прочий контент).
Лицензирование игровых движков — не новая бизнес-модель, но из-за сложной среды PS3 они в конечном итоге стали ещё одним привлекательным вариантом для разработки.
7.2. Носители информации
Теперь, когда мы закончили говорить о разработке игр, настало время рассмотреть их распространение. Итак, здесь описываются официальные механизмы распространения игр для PS3.
7.2.1. Диски Blu-ray
Пример розничной игры
Новое поколение = новый носитель.
Ограничения формата DVD начинали становиться всё более очевидными, как для игровой индустрии (малый объем данных на диске), так и для киноиндустрии (формат видео 480i) [71]. Это был вопрос времени, когда Sony (или иной производитель) представит новый стандарт для замены предыдущего в новых устройствах.
Для своей новой консоли Sony выбрала диск формата Blu-ray.
Как понятно из названия, Blu-ray — это новый формат оптических дисков, обеспечивающий более высокую плотность хранения данных благодаря использованию синих светодиодов [72], в отличие от красных, используемых в DVD. Поскольку синий свет имеет меньшую длину волны, чем красный, то в одном и том же месте на диске может быть записано больше информации (питов и лендов) [73]. В результате диски Blu-ray дают удивительно большую емкость (от 25 ГБ до 50 ГБ!), используя тот же пластиковый диск с теми же размерами, что и CD или DVD.
Формат данных Blu-ray удовлетворяет многим потребностям в различных отраслях: фильмы высокой четкости, управление цифровыми правами (DRM), региональная блокировка, новая файловая система и даже среда выполнения для Java-программ [74]. В случае игровой индустрии, розничные игры для PlayStation 3 распространялись на 25 ГБ или 50 ГБ дисках с защитой от копирования. Они считываются приводом 2x, развивающим скорость до 8.58 МБ/с [75], однако лазер PS3 также может считывать DVD (на скорости 8x) и CD (на скорости 24x) для воспроизведения старых игр и фильмов.
В то время как ранние игры для PS3 работают с диска, более поздние игры копировали часть своих ресурсов на жесткий диск для увеличения скорости чтения. Тем не менее, диск с игрой необходим всегда для запуска игры.
7.2.2. Онлайн-магазин
Скриншоты магазина PlayStation Store на PS3
Одновременно с выпуском консоли Sony запустила собственный канал распространения под названием PlayStation Store, позволяющий игровым студиям продавать свои игры в цифровом виде, а пользователям приобретать их, не вставая с дивана. Для работы игр не требуется никакого физического носителя (кроме места на жестком диске), но владение цифровым продуктом было привязано к онлайн-аккаунту. Это вызвало беспокойство пользователей в марте 2021 года, когда Sony объявила [76] (а затем отменила [77]) закрытие этого магазина.
В своем цифровом магазине Sony также воспользовалась возможностью продавать оцифрованные версии игр для PS1, PS2 и PSP под названием PlayStation Classics. Они загружаются и устанавливаются аналогично играм для PS3, но для их работы используются эмуляторы, прилагаемые в цифровой версии. Фактически, игры PS2 используют один и тот же неускоренный программный эмулятор независимо от того, содержат ли модели PS3 чипсет PS2 [78] или нет! Полагаю, это заключительная глава для аппаратной эмуляции в PS3.
За кулисами PS Store — это просто веб-сайт, доступный только через приложение PS Store в XMB. На протяжении своего жизненного цикла пользовательский интерфейс несколько раз переделывался, чтобы отражать, как я полагаю, глобальный спрос на более причудливые пользовательские интерфейсы.
7.3. Сетевой сервис
Помимо интернет-магазина, на платформе появилось множество других онлайн-решений, включая дебютировавший бесплатный (только на PS3 и PS Vita — прим. переводчика) онлайн-сервис PlayStation Network (PSN), который напрямую конкурирует с платным Xbox Live от Microsoft.
Сервис позволил пользователям создать личный аккаунт, назначить аватар, и затем использовать эту новую цифровую личность для многопользовательских игр, переписки и других социальных взаимодействий. Пользователи также могут получать трофеи, если они совершают определенное событие или действие в игре. Затем они отображаются в онлайн-профиле (как некая медаль почета), чтобы, наверное, запугать соперников и завоевать уважение друзей.
Скриншоты меню PlayStation Network в XMB
И последнее, но не менее важное: как и в случае с обновляемой ОС, игры тоже обновляются. Таким образом, при запуске игры XMB может предложить загрузить обновления игры (в виде «пакетов»), которые исправляют ошибки и/или добавляют новый контент. Обновления устанавливаются на жесткий диск и работают аналогично слоистой файловой системе.
8. Борьба с пиратством и хоумбрю-приложениями
Все, что вы только что прочитали, должно быть каким-то образом защищено от «несанкционированного» доступа. Если хотите ознакомиться с тем, как компания Sony выполнила эту работу, то вам дальше будет интересно.
8.1. Обзор фундамента безопасности
Многие части консоли уже обеспечивают функции безопасности, которые не требуют ручной реализации в ПО:
SysCon: непонятный проприетарный чип (кратко упомянутый в процессе загрузки), который управляет линиями питания Cell, RSX и южного моста. Его EEPROM содержит записи, считываемые модулями ОС, чтобы определить, какие функции включены, а какие нет [79].
Хоть я и использую слово «непонятный», но SysCon — это просто микроконтроллер, либо взятый с полки ARM7TDMI-S (вот так, PS3 имеет некоторые общие черты с Game Boy Advance и даже поздними версиями PS2) с поддержкой MagicGate, либо измененный вариант NEC 78K0R [80]. Больше всего интригует внутренняя прошивка SysCon.
SysCon и Cell общаются друг с другом с помощью последовательного интерфейса (SPI), который подключается к компоненту TEST в Cell [81]. TEST предоставляет множество функций отладки Cell, хотя SysCon подключается только к порту «Pervasive logic», позволяя последнему управлять такими вещами, как питание или температура [82].
Cell содержит скрытый ROM, в котором хранятся незашифрованные процедуры загрузки, не опасаясь, что посторонние смогут увидеть или изменить их.
Режимы привилегий Cell и изолированный режим SPE предотвращают доступ программ к неавторизованным ресурсам.
Южный мост плавно шифрует содержимое жесткого диска с помощью AES.
Подсистема Blu-ray представляет собой ещё одну крепость. Содержимое диска шифруется с помощью ключа, который находится в области диска «ROM mask» (недоступной для обычных считывающих устройств) [83].
Кроме того, Sony внедрила в ПО следующие средства защиты:
Сложная цепочка доверия, которая начинается с незашифрованного загрузочного ROM в Cell и заканчивается графическим интерфейсом пользователя (XMB), который загружает только зашифрованные Sony двоичные файлы под ядро и гипервизор.
Цепочка доверия реализует несколько алгоритмов шифрования, включая асимметричные (RSA и ECDSA) и симметричные (AES) в сочетании с HMAC и SHA-1 (для подтверждения целостности данных).
Некоторые ключи шифрования изготавливаются в процессе производства. Это значит, что если хакеры найдут и выложат эти ключи, они не будут работать на других консолях. За это приходится расплачиваться тем, что Sony не может исправлять ПО, зашифрованное этими ключами, после того как консоль покинет завод.
Игры должны обращаться к ядру для доступа к железу, которое, в свою очередь, обращается к гипервизору. Эти «абстракции», в теории, не позволят игровым эксплойтам превышать привилегии в системе.
Диаграмма шифрованного SELF-файла
8.2. Поражение
Вы уже видели, на что способна эта консоль, но ожидали ли вы, что хакеры будут довольствоваться ограниченными возможностями OtherOS? Думаю, Sony тоже не ожидала. Компания изо всех сил старалась защитить некоторые области, но оставляла другие области полузакрытыми, которыми позже и воспользовались хакеры.
Давайте посмотрим, как некоторые из «крепостей» консоли были взломаны независимыми хакерами по всему миру. Следует помнить, что сообщество взломщиков PS3 было очень активным, каждый год выпуская множество инструментов и документации. Поэтому я остановлюсь на нескольких вехах, которые проложили путь к притоку контента и разработке хоумбрю-приложений, но больше информации вы найдете на PS3History [84].
8.2.1. Обход гипервизора
В 2010 году, после трех лет затишья на хакерской сцене, в сообществе произошло нечто интересное.
Джордж Хотц (George Hotz) — это хакер, известный тем, что ранее разблокировал первую модель iPhone 2G, чтобы она могла работать с любой сетью (первоначально телефон работал только с сетью Cingular / AT&T). Так вот — он смог прочитать и записать защищенные области в памяти консоли, не будучи остановленным гипервизором. Позже он опубликовал свой эксплойт вместе с кратким его описанием в своем блоге [85].
Эксплойт требует двух материалов: установки Linux под управлением OtherOS (для выполнения произвольного, но ограниченного кода) и наличия внешнего глитчера, подключенного к шине XDR (для общения с ОЗУ).
Коротко, гипервизор использует хэш-таблицу, хранящуюся в ОЗУ, для каталогизации адресов памяти вместе с их уровнями привилегий. Поэтому пользовательские программы не могут получить доступ к защищенным областям памяти.
Атака работает путем нарушения целостности такой таблицы, чтобы иметь возможность писать поверх неё, а затем использовать эту привилегию для изменения записей, чтобы предоставить текущей программе доступ к каждой области в памяти.
В итоге Хотц обнаружил, что в Linux / OtherOS программы могут запрашивать у гипервизора множество блоков памяти, указывающих на один и тот же физический адрес. Если программа деаллоцирует их в то время, когда на шине XDR присутствуют внешние помехи (например, из-за глитчера, посылающего электрические импульсы), процесс деаллокации завершается наполовину [86]. Как следствие, хэш-таблица гипервизора (находящаяся в ОЗУ) все ещё содержит запись о выделенных адресах, но в то же время он считает, что это пространство было освобождено.
Затем эксплойт Хотца запрашивает дополнительные блоки, поэтому гипервизор расширяет свою таблицу новыми записями. Этот процесс продолжается до тех пор, пока запись в хэш-таблице не перекрывает место в памяти блока, который должен был быть деаллоцирован. Поскольку в хэш-таблице сохранилась старая запись, дающая пользователю доступ к этому адресу, гипервизор в итоге предоставляет к изменению записи в хэш-таблице! Таким образом, эксплойт изменяет запись, чтобы расширить доступ ко всему пространству памяти.
Диаграмма, описывающая атаку на гипервизор
Хоть этот эксплойт и требовал использования среды Linux, работающей из под OtherOS, он стал огромным шагом к дальнейшему реверс-инжинирингу и исследовательским проектам. Теперь хакеры получили возможность исследовать критические области системы, которые изначально были недоступны. Стоит отметить, что в это же время Sony выпустила обновление ПО версии 3.21
, которое убирало из консоли OtherOS. Можно было бы подумать, что это удержит хакеров от продолжения работы, но это только дало им больше причин ускорить её.
8.2.2. PS Jailbreak
«Официальная» флешка PS Jailbreak
Позже, в 2010 году, группа под названием PS Jailbreak анонсировала (и позже выпустила) уникальное решение для запуска хоумбрю-приложений непосредственно из встроенной оболочки консоли (XMB, из под GameOS) без вмешательства в железо консоли. И все это не понравилось Sony, которая вскоре пойдёт юридическим путём, чтобы заблокировать продажи продукта.
Устройство от PS Jailbreak — это USB-флешка, которая подключалась к переднему USB-порту перед включением консоли. Далее пользователь должен был нажать кнопку питания, затем — кнопку извлечения. Если инструкции были выполнены успешно, то пользователь видел обычный интерфейс XMB, но с добавленной опцией «Install PKG» и нескольких хоумбрю-приложений, созданных для копирования игр с Blu-ray на жесткий диск и их последующего запуска.
За кулисами эта флешка выполняет огромное количество работы, которую можно разделить на две части [87]:
USB-эксплойт: после включения консоли флешка обманывает систему, заставляя её думать, что она подключена к USB-хабу со шестью портами. Потом она выполняет сложную последовательность USB-команд, пока не достигнет переполнения кучи и эскалации доступа к ядру PS3 (уровень 2). Затем она приступает к выполнению полезной нагрузки (payload).
Payload: это ещё один сложный пакет, который исправляет оригинальную оболочку, чтобы включить скрытые функции, доступные только на отладочных устройствах (кнопка «Install PKG»). Пакет отключает проверку подписи (для загрузки произвольного модуля или пакета) и перенаправляет команды Blu-ray на жесткий диск (для загрузки игр). Тот факт, что эта программа может изменить так много на уровне ядра, заставляет задуматься, а в чём же гипервизор хорош?
В дополнение к этому M4j0r позже сказал:
Интересно, что он даже не использует код Sony, эта часть lv2 была написана Logitech, и разработчики этого эксплойта могли иметь доступ к исходному коду (благодаря взлому 2008 года) [88]
Позже этот продукт был взломан другими сообществами, и вскоре появились клоны с открытым исходным кодом (например, Groove), которые снимали многие ограничения оригинала (например, пользователи теперь могли отключать устройство от сети после завершения эксплойта). Некоторые форки были даже развернуты на калькуляторе Texas Instruments [89].
В любом случае, Sony действовала быстро, выпустив обновление ПО версии 3.42
, чтобы удалить эту золотую жилу [90]. Но всё-таки дверь для хоумбрю-приложений уже была открыта.
8.2.3. Достойны упоминания
Прежде чем я наконец-то расскажу о главном достижении хоумбрю-сцены PS3, позвольте мне описать пару методов, которые были разработаны примерно в то же самое время:
USB Jig: ещё один USB-накопитель, на этот раз запрограммированный на то, чтобы обманом заставить консоль войти в режим Factory Service Mode. Этот режим предназначен только для обслуживания консоли авторизованным персоналом. Программа, встроенная в Jig, повторяет программу, которую Sony предоставляет своим инженерам. Основное преимущество сервисного режима — это возможность понизить прошивку консоли до версии, совместимой с PS Jailbreak. Payload также был доступен в виде хоумбрю-приложения для PSP [91]. В ответ Sony внесла исправления в сервисный режим, чтобы затруднить его восстановление в «нормальный» режим или изменение прошивки через него, отговаривая пользователей от использования режима.
Эмулятор оптического диска (Optical Disc Emulator, ODE): серия аппаратных продуктов, которые поставлялись различными компаниями (Cobra, E3 и прочими). Они вмешивались не в прошивку консоли, а в интерфейс SATA / PATA диска Blu-ray. ODE — это платы, которые устанавливаются между материнской платой и приводом Blu-ray, выступая в роли посредника. Эмулятор обманывает консоль, заставляя её думать, что на диске находится игра, но вместо этого загружает образ диска с внешнего USB-накопителя. Однако на момент выхода эти устройства стоили довольно дорого. История взлома PS3 содержит длинные «непрошиваемые» периоды времени, когда для новых консолей не было доступных программных эксплойтов, поэтому ODE смогли заполнить этот пробел.
Даунгрейдер: поскольку Sony продолжала устранять уязвимости с помощью новых обновлений ПО, у пользователей не осталось другого выбора, кроме как понизить версию прошивки с возможностью запуска эксплойта. Таким образом, появились компании, подобные E3, которые поставляли специализированное оборудование, позволяющее переписать систему консоли «трудным способом». То есть, путем прямой прошивки чипов NAND или NOR. По понятным причинам этот метод требует большего мастерства и терпения по сравнению с USB-методом.
Изолированные утечки: эта утечка предназначена для исследовательских целей, в отличие от «функций», которые увидит пользователь (но, тем не менее, она необходима для дальнейшего развития). В любом случае, данные об возврате сертификатов (для внесения скомпрометированных в черный список) анализируются
lv2ldr
, ведь так? Ну, было обнаружено, что этот процесс содержит множество уязвимостей. Во-первых, по необъяснимой причине, эти данные могут быть записаны в пользовательской среде. Во-вторых, парсер не выполняет проверку границ получаемых данных (и вот опять). Поэтому хакерам удалось создать пользовательские данные об возврате, которые могли привести к переполнению буфера и, в конечном итоге, позволить им выполнить произвольный код внутри изолированного режима SPU. Это позволило получить доступ к конфиденциальным данным (т.е. ключам), которые предположительно были защищены от остальной части системы [92].
8.2.3. Падение шифрования
Как и в саге с PSP, первоначальные эксплойты требовали больших усилий и легко исправлялись Sony, что привело к невыгодной игре в кошки-мышки. Однако, как и в случае с PSP, это был вопрос времени, когда какое-нибудь открытие нарушит фундамент безопасности этой системы: её цепочку доверия.
В 2011 году Джордж Хотц вместе с командой fail0verflow опубликовали ещё одно открытие — закрытые ключи шифрования, которые Sony использует для подписи двоичных файлов, выполняемых metldr
.
Бинарные файлы, загружаемые на этапе загрузки, подписываются ключом ECDSA. Так как это асимметричная система шифрования, то любой, кто владеет закрытым ключом (Sony, а теперь и другие), может зашифровать и подписать двоичные файлы. В глазах metldr
эти файлы будут выглядеть «подлинными».
А поскольку metldr
является третьим этапом загрузки перед загрузкой lv1
(гипервизора), это означает, что хакеры смогут создавать собственные гипервизор, ядро и всё, что находится под ними. Кроме того, любая PlayStation 3 на рынке будет думать, что пользовательские двоичные файлы являются подлинными. В общем, это был эксплойт в стиле батареи Пандоры, но он был полностью программный.
Открытие этого ключа, которое должно было быть вычислительно невыполнимым, стало возможным благодаря «оплошности» в реализации алгоритма ECDSA компанией Sony.
Кратко, математическая формула, используемая для ECDSA, использует случайное значение, которое Sony никогда не меняла во всех файлах обновлений, которые они распространяли [93].
Это значение, по сути, превращалось в константу, тем самым облегчая решение других переменных, что в итоге и произошло. Последствия этого открытия описаны в следующих параграфах.
8.3. Эра кастомных прошивок
Список различных механизмов защиты, которые были скомпрометированы
Взлом metldr
означал, что теперь все могли создавать «официальные» системы для PS3, что привело к появлению «разновидностей» GameOS, которые различные сообщества выпускали с различными настройками. Эти системы представляли собой модификации официальных файлов прошивки Sony (которые она распространяла в виде обновлений) и пересобирались с использованием утечки ключей, поэтому их можно было установить куда угодно.
Результат получил название »кастомная прошивка» (Custom Firmware, CFW) и стал де-факто методом взлома этой консоли, пока Sony не приняла жесткие меры по его устранению.
Моя установленная CFW с открытым «меню VSH». Этот вариант прошивки (под названием «Rebug») также позволяет мне превратить консоль в отладочную станцию и возиться со своими хоумбрю-приложениями.
Тем временем в сети появилось множество CFW с разными названиями (например, «Rebug», «Ferrox» и прочее), и они содержали следующие особенности [94]:
Отключение проверки подписи для любого установленного или устанавливаемого модуля.
Разрешение чтения и записи (классический peek and poke) по любому адресу памяти, используя либо гипервизор (уровень 1), либо ядро (уровень 2).
Активация скрытых функций отладки для установки модулей, упакованных в виде файлов
.pkg
. Для работы в среде CFW их не нужно было подписывать ключами Sony.Включение возможности монтирования образа диска, как если бы был вставлен диск Blu-ray.
Восстановление OtherOS и даже его усовершенствование за счет снятия ограничений, накладываемых гипервизором. Результат был назван OtherOS++.
Запись базы данных в EEPROM чипа SysCon, позволяющая установить любую версию системы по выбору. Это также известно как QA Toggling.
Изменение стиля XMB (например, удаление предупреждения об эпилепсии, разрешение делать скриншоты в игре и так далее).
Есть и мой любимый вариант: привнести отладочные функции из тест-кита, позволяя любой розничной консоли стать отладочной станцией. Это может быть сделано установкой либо прошивки с возможностями отладки, либо той, которая может преобразовать розничную консоль (CEX) в отладочную модель (DEX) путем изменения специфических для консоли данных во флэш-памяти.
8.3.1. Sony наносит ответный удар
Аналогично событиям, произошедшим после появления CFW для PSP, Sony ответила двумя обновлениями системы безопасности:
Со стороны ПО Sony выпустила два системных обновления, которые улучшили систему безопасности:
В версии
3.56
двоичные файлы подписываются новыми ключами шифрования, устойчивыми к предыдущему открытию ECSDA [95]. Из-за этого создатели CFW не могут настроить новые двоичные файлы (поскольку у них нет закрытых ключей для повторного шифрования).
Кроме того, поставляется новая версия приложения System Updater, которое вводит новые сертификаты в файлы обновления системы (PS3UPDAT.PUP
). Это означает, что даже если хакерам удастся собрать новый CFW, только консоли с версией системы3.55
или ниже смогут установить его [96].Позже, обновление системы
3.60
изменило процесс загрузки. Оно упразднилоmetldr
и переместилоlv0
на место загрузчиков (lvl1dr
,lv2ldr
,appldr
иisoldr
). В целом это означало, что хакеры не могли модифицировать новые системные файлы без предварительного взломаlv0
(нахождения его закрытого ключа).В конце концов это произошло в конце 2012 года, когда команда под названием «Три Мушкетера» (The Three Musketeers) опубликовала ключи lv0 [97]. Это открыло путь к новым CFW, сделанным на основе версий системы, более новых, чем
3.55
. Хотя, из-за вышеупомянутых изменений в программе обновления, установить её могут только пользователи системы версии3.55
или ниже (включая любые CFW с отключенной проверкой подписи).
С аппаратной стороны, не только последующие модели PS3 (CECH-25xxx, CECH-3xxx и CECH-4xxx) теперь поставляются с версией системы выше 3.55
, но и содержат другой вариант bootldr
или lv0ldr
(называемый lv0ldr.1
).
Этот вариант расшифровывает и загружает lv0
и извлекает новый системный файл lv0.2
. Последний содержит метаданные о lv0
[98], чтобы удостовериться, что lv0
не был подделан. lv0.2
подписывается новым ключом (также неуязвимым к предыдущему открытию ECDSA), что не позволяет хакерам получить контроль над цепочкой загрузки.
По сей день эти модели консоли не могут запустить CFW, поэтому их прозвали непрошиваемыми. Однако они могут работать с «гибридной прошивкой», о которой мы поговорим позже.
Со временем количество CFW-совместимых консолей только уменьшалось, поэтому PS3, не обновленные до версии 3.55
, стали своего рода реликвиями. В то же время резко возрос спрос на альтернативы, такие как даунгрейдеры (для возврата к версии системы 3.55
на старых моделях) и ODE (для запуска пиратских игр на новых моделях).
8.3.2. Возвращение хоумбрю-приложений
После длительного периода ожидания для пользователей, которые пропустили окно для установки CFW, в конце 2017 года команда хакеров выпустила PS3Xploit, коллекцию эксплойтов и утилит [99]. Они вернули возможность установки CFW на старые модели без необходимости использования дорогостоящего даунгрейдера (и навыков работы с ним).
Основная полезная нагрузка PS3Xploit полностью повторяет работу аппаратного даунгрейдера (исправление файлов CoreOS), но с помощью программного обеспечения. Нагрузка работает следующим образом:
Отправной точкой является интернет-браузер XMB, построенный на базе WebKit. PS3Xploit использует JavaScript для получения возможности выполнения произвольного кода в пользовательском пространстве системы (и вне среды JavaScript). Чтобы запустить эту программу, пользователю достаточно открыть родной веб-браузер XMB, ввести URL-адрес, указывающий на хост PS3Xploit, и позволить ему сделать свою работу.
Так получилось, что ядро предоставляет системные вызовы, которые могут быть использованы для перезаписи файлов системы во флэш-памяти. Кроме того, оболочка (XMB) и её плагины хранят в памяти процедуры, которые используют эти вызовы.
PS3Xploit не может вызвать эти системные вызовы напрямую из-за защиты «no-execute» гипервизора, не позволяющей эксплойту загружать новый код в пользовательскую среду. Однако он может найти способ перезаписать флэш-память, «позаимствовав» процедуры у оболочки.
PS3Xploit модифицирует стек выполнения WebKit так, чтобы перенаправить выполнение на подпрограммы оболочки. Этот тип атаки (повреждение стека для перенаправления выполнения на другой код, находящийся в памяти) называется программированием, ориентированным на возврат (Return Oriented Programming, ROP), и он очень популярен в жанре InfoSec.
Одним из способов борьбы с ним — реализация рандомизации расположения адресного пространства (Address Space Layout Randomization, ASLR), которая затрудняет угадывание расположения процедур (называемых гаджетами). Но, как можете догадаться, в гипервизоре Sony отсутствует ASLR.Эти системные вызовы запускаются с параметрами PS3Xploit, и таким образом они заменяют файлы CoreOS (первая часть операционной системы, хранящаяся во флэш-памяти) на исправленные [100].
Теперь консоль способна устанавливать неофициальные обновления программного обеспечения, и пользователь может этим воспользоваться для установки кастомной прошивки. Правда, пока что он не может понизить версию системы, но после установки актуального CFW пользователь может установить дополнительные утилиты для понижения версии системы, и если захочет, и установить более улучшенную CFW.
Как видите, этот «подарок с небес» вернул кастомные прошивки в центр внимания и сделал устаревшими аппаратные даунгрейдеры и ODE. С другой стороны, для тех моделей, которые не могли установить CFW любым способом (непрошиваемые), позже командой был предложен другой пакет эксплойтов, PS3Hen.
PS3Hen фокусировался на включении подмножества функций CFW в прошивку (