Возможно вы помните потрясающую новость о найденной уязвимости в прошивке iOS 9.x, позволяющей восстановить любое 32-битное устройство.
При наличии цифровой подписи, данная утилита позволяет восстановить любое 32-битное устройство на любую версию прошивки iOS 9.x, вне зависимости от установленной начальной версии, без всяких ключей, дополнительного ПО и даже без выполнения процедуры джейлбрейка.
Как видно из этого описания, данная брешь в безопасности обладает большим потенциалом и позволяет вернуть в строй все 32-битные устройства. В связке с джейлбрейком Home Depot для версий iOS 9.1-9.3.4, все совместимые устройства больше никогда не останутся без джейлбрейка, навсегда сохранят возможность возврата на версию iOS 9 без страха перед процедурой обновления или восстановления.
Хорошей новостью является то, что разработка утилиты iDeviceReRestore завершена и доступна для всех пользователей. Выпуск окончательной версии проверенного временем инструмента idevicerestore состоялся благодаря разработчикам @alitek123, @Thmitt, и @JonathanSeals, которые воспользовались обнаруженной @alitek123 брешью в безопасности. Проведение процесса бета тестирования является заслугой разработчиков @Mirko, @ee_csw и @DjSn0wfall.
Для проверки работы инструмента в действии его можно скачать с вебсайта iDeviceReRestore. Текущей номер утилиты —1.0.1, в которой была решена проблема управления зависимостями, присутствовавшей в первоначальной версии инструмента. В настоящий момент времени существуют версии инструмента для работы под управлением Linux и macOS. Версия для работы под ОС Windows отсутствует, но я знаю множество примеров успешного применения этого инструмента в режиме работы виртуальной машины.
Детали о работе инструмента:
- Поддержка только 32-битных устройств.
- Восстановление только на версии прошивок iOS 9.x.
- Исходная версия прошивки может быть любой, протестированы версии с iOS 6 по iOS 10.
- Наличие джейлбрейка для исходной версии не обязательно.
- Процесс не требует наличия ключей, дополнительного ПО и прочих специальных инструментов для данного случая.
- Обязательно наличие сохранённых цифровых подписей для устанавливаемой версии прошивки.
- Наличие особых требований для цифровых подписей. Цифровые подписи не могут быть из разряда тех, что получены «по воздуху». Можно использовать подписи из разряда «Erase» или «Update», хотя для процесса не все они подойдут. Цифровые подписи должны быть сохранены без специального для данного случая одноразового кода. Если цифровая подпись начинается со строчки «MIIKkj», то все нормально, ее можно использоваться. Если нет, то она возможно подойдет, но потребуется дополнительная проверка.
- Метод требует наличия подписанного «baseband», например Prometheus. Тем не менее, большинство, если все устройства, должны без проблем получить рабочий baseband начиная от текущей версии для iOS 10 и подписанной версией, полученной «по воздуху».
- Восстановление с версии iOS 9 на версию iOS 9 можно выполнить в режиме восстановления, восстановление с версии, отличной от iOS 9, на версию iOS 9 необходимо выполнять только в режиме «DFU».
- Цифровые подписи должны иметь отдельные билеты iBSS для восстановления в режиме DFU. В случае их отсутствия, эти цифровые подписи могут быть использованы только для восстановления из версии прошивки iOS 9 на версию прошивки iOS 9.
Для проверки совместимости имеющейся цифровой подписи с утилитой «iDeviceReRestore», можно воспользоваться этим «nonce-checker» сервисом. Или, открыть цифровую подпись в текстовом редакторе и проверить её на предмет содержания билетов iBSS и содержания первоначальной строки.
По словам разработчика @DjSn0wfall, компания Apple не сможет закрыть эту уязвимость по следующим причинам. В режиме «DFU» устройство находится в режиме ожидания проверки легитимности компонента подписи, чем является билет iBSS. После загрузки цифровой подписи с билетом iBSS, строго говоря мы не нарушаем работу механизма безопасности, что позволяет нам в следующем шаге загрузить подписанный компонент iBEC, в котором уже присутствует необходимая брешь – отсутствие специального одноразового кода «no-nonce. После этого мы инициализируем процесс восстановления устройства, игнорируя любые другие требования по безопасности и проверки целостности. Следует отметить, что данный эксплойт также частично присутствует начиная с версии iOS 8 и вплоть до версии iOS 10.2.1, но в этих версиях данный эксплойт не может быть использован.