Экспериментальная программа Relaxin Lite позволяет осуществить джейлбрейк на iPhone прямо из браузера Safari, без необходимости предварительной установки отдельного приложения. Представленная демонстрация показывает, как устройство с iOS 17.1.1 проходит полный процесс: от открытия локальной веб-страницы до перезагрузки системного интерфейса и возврата на главный экран после активации Relaxin.

Через браузер Safari загружается Relaxin Lite по локальному IP-адресу. На странице указано, что браузерная цепочка Coruna предназначена для устройств arm64e с iOS версий 17.0–17.2.x. Процессоры arm64e — это современные 64-разрядные чипсеты Apple с дополнительной криптографической защитой указателей. Во время работы вкладка не должна сворачиваться, так как браузер последовательно выполняет несколько этапов эксплуатации уязвимостей.

На первом этапе Relaxin Lite осуществляет обход PAC (механизма аутентификации указателей). Современные чипсеты Apple добавляют криптографическую подпись к определённым указателям в памяти и проверяют её перед использованием адреса. Этот механизм защиты препятствует изменению указателей в памяти и направлению процессора к нежелательным участкам кода. Для продвижения вперед по цепочке эксплуатации необходимо не только найти уязвимость в работе с памятью, но и обойти защиту PAC.

В представленной демонстрации первый этап успешно срабатывает с первой попытки. Затем Relaxin Lite проверяет наличие защиты PAC и начинает загружать дополнительные модули. В журнале появляются файлы Stage2_16.6_17.2.1_seedbell_pre.js, Stage_17_0_17.2.1_seedbell.js и другие компоненты Coruna. Разработчики отмечают, что этап с WebKit может требовать несколько попыток. Успешное завершение браузерной части подтверждается системным окном SpringBoard с надписью Coruna.

WebKit необходим только для первоначального преодоления ограничений Safari. Контроль над браузерным процессом сам по себе не предоставляет джейлбрейку необходимые права во всей iOS. Операционная система разделяет приложения, системные сервисы и ядро несколькими уровнями защиты, поэтому после WebKit начинается следующий этап, где Relaxin постепенно получает более высокие уровни доступа.

После завершения Coruna устройство переключается на основной интерфейс Relaxin. Зелёное меню на чёрном фоне отображает поддерживаемые версии iOS 16.5.1–17.3.1. В демонстрации программа определяет iOS 17.1.1, Darwin 23.1.0 и время работы устройства с момента последнего запуска.

Команда relaxin do запускает системную часть джейлбрейка. Инструмент сначала проверяет параметры устройства и получает kernelcache, затем получает доступ к ядру, повышает привилегии, подготавливает bootstrap, настраивает доверие для BaseBin, передаёт необходимые компоненты launchd и активирует SystemHook.

Kernelcache содержит ядро iOS и связанные компоненты, подготовленные для загрузки на конкретном устройстве. Анализ kernelcache помогает инструменту определить структуры и адреса, необходимые для работы с конкретной версией системы. После получения доступа к ядру Relaxin может изменять ограничения, недоступные обычным приложениям.

Затем программа повышает привилегии и подготавливает bootstrap — набор файлов и компонентов для среды джейлбрейка. Relaxin использует архитектуру RootHide и не требует классического переписывания системного раздела iOS. Дополнительные программы и служебные файлы хранятся отдельно от защищённой системной части.

Следующий шаг касается BaseBin, который содержит базовые исполняемые компоненты Relaxin, требующие разрешения на запуск. После настройки доверия управление рядом процессов передаётся launchd. Системный процесс launchd запускается при загрузке iOS и отвечает за активацию многих сервисов операционной системы.

Затем активируется SystemHook. В журнале демонстрации указан вариант с использованием стандартного dyld, динамического загрузчика Apple. dyld подключает библиотеки к запускаемым процессам, а SystemHook использует механизм загрузки для внедрения компонентов джейлбрейка в необходимые процессы.

После настройки SystemHook Relaxin перезагружает iconservicesagent и завершает связанные операции. Сервис iconservicesagent участвует в обработке информации об установленных приложениях и их значках. Перезагрузка позволяет графическому интерфейсу iOS применить изменения без полной перезагрузки устройства.

В завершение на экране появляется белая пиксельная буква R, затем iPhone показывает логотип Apple. После этого SpringBoard перезагружается, и пользователь снова видит обычный домашний экран iOS. В демонстрации система работает на китайском языке, а возле значка настроек видна красная иконка уведомления.

Основной Relaxin относится к полусвязанным джейлбрейкам и основан на архитектуре RootHide. После полной перезагрузки iPhone изменения становятся неактивными, однако переустанавливать среду не требуется. Пользователю достаточно повторно активировать джейлбрейк.

Relaxin поддерживает iOS 17.0–17.3.1 и совместим с устройствами на процессорах от A12 до A17, а также некоторыми устройствами на M1 и M2. Relaxin Lite имеет более ограниченную поддержку. Показанная браузерная цепочка Coruna работает с arm64e и iOS версий 17.0–17.2.x.

Главное отличие Lite заключается в способе запуска. Обычная версия Relaxin требует отдельно установленного и подписанного IPA-файла. Coruna переносит первоначальный этап в Safari: пользователь открывает локальную страницу, WebKit запускает браузерную цепочку, а после успешного прохождения защита передаёт управление основной среде Relaxin.

Разработчики пока считают Safari-версию экспериментальной. WebKit может не сработать с первой попытки, а диапазон поддерживаемых прошивок уже, чем у основного Relaxin. Ранее разработчики сообщали о работе над расширением поддержки Coruna, а после новой демонстрации сообщество ожидает полноценную активацию через Safari в следующих публичных версиях.

Для владельцев совместимых устройств браузерный запуск прежде всего исключает необходимость устанавливать отдельно подписанный IPA на начальном этапе. Надёжность прохождения Coruna через WebKit на различных моделях iPhone будет видна из следующих версий Relaxin и дальнейшего тестирования цепочки.