Security Week 40: уязвимость в BootROM мобильных устройств Apple / Хабр

Введение

Всё началось с того, что меня несколько расстраивало отсутствие возможности загружаться с дисковода на старой плате Socket 3. CD-приводы в то время ещё не были распространены и разработчики BIOS даже не задумывались о предоставлении такой опции. Да и операционные системы распространялись на дискетах.

Чуть позднее, когда ОС (в основном конечно Windows) стало удобнее устанавливать с диска, чем с пары десятков дискет, придумали так называемые загрузочные floppy, содержавшие драйвер дисковода и передававшие ему управление непосредственно. Но это на мой взгляд костыль и некрасиво.

Bootrom и с чем его едят

Да, да, сетевая карта. Дело в том, что некоторые из них имеют функцию сетевой загрузки с некоторого сервера и для этого несут на себе свой собственный BIOS. В моём случае это карта Realtek rtl8139.

Панелька предназначена для микросхемы памяти объёмом до 64 килобайт. Никто не заставляет записывать именно BootROM, это может быть любой код. Содержимое ПЗУ просто исполняется после загрузки основного BIOS. Так вот, Plop умеет загружаться с сетевой карты, но для этого его нужно подготовить.

Plop boot manager

Этой альтернативой был Plop. На самом деле я даже не задумывался об использовании загрузчиков, но когда мне сказали про Plop, я решил, что это весьма здравая идея. Он умеет загружаться из кучи источников и загружать практически любые устройства, кроме usb-дисководов.

Оставалось только решить с чего загружать Plop. Самым очевидным вариантом была дискета, но это снова костыль. А больше компьютер (не считая диска, естественно) ни с чего грузиться и не умеет. И вот тут на помощь пришла, как ни странно, сетевая карта.

Security week 40: уязвимость в bootrom мобильных устройств apple

Security Week 40: уязвимость в BootROM мобильных устройств Apple / Хабр

В зависимости от ваших предпочтений к этой новости можно подобрать один из двух заголовков. Либо «серьезная уязвимость обнаружена в мобильных устройствах Apple вплоть до iPhone X», либо «наконец-то придумали новый способ для джейлбрейка iДевайсов (но это не точно)». Насчет джейлбрейка пока и правда не ясно (хотя с большой вероятностью новые способы взлома айфонов появятся), а вот уязвимость, похоже, реальна. Хакер, известный как axi0mX, выложил в свободный доступ эксплойт для бага в BootRom ряда мобильных устройств Apple. Деталей об уязвимости пока немного, известно только, что эксплуатируется некое

Больше про Хуавей:  Как Зайти в Роутер или Модем Huawei 192.168.3.1, 192.168.8.1 и Mediarouter.home - Настройка WiFi в Личном Кабинете и Подключение к Интернету - ВайФайка.РУ - Huawei Devices - Huawei Devices

race condition

. Но самое важное, что уязвимость впервые за долгое время найдена в коде, который используется для первоначальной загрузки устройства и хранится в ПЗУ, то есть к ней еще и нельзя выпустить патч.

Эксплойт, названный checkm8 (читается как checkmate, «шах и мат»), сам по себе ни на что не способен: он лишь позволяет выполнить произвольный код в процессе загрузки телефона. Что этот код будет делать дальше — большой вопрос, так как BootRom хоть и важный, но не единственный механизм защиты мобильных устройств Apple. Точно известно, что напрямую получить доступ к личным данным пользователя не получится — систему Secure Enclave эксплойт не обходит. В общем, это плохая новость, хорошая новость, плохая новость. Плохая новость: баг есть там, где его нельзя починить. Хорошая новость: данные пользователей, скорее всего, в безопасности. Плохая новость: комбинация этой уязвимости с другими теоретически может дать большие возможности как мирным исследователям безопасности iOS, так и злоумышленникам.

Подробнее об уязвимости можно узнать в этой новости, в интервью автора эксплойта изданию ArsTechnica и на гитхабе.

На Github эксплойт chekm8 выложен в составе утилиты для перепрошивки устройств Apple, вместе с более ранним творением того же автора — эксплойтом alloc8 для телефона iPhone 3Gs, который был опубликован в 2022 году. Понятно, что эксплойт для устройства 2009 года в 2022-м имел чисто теоретический интерес, но он, в отличие от checkm8, перманентный (tethered), то есть возможность выполнения произвольного кода (и полного джейлбрейка устройства) сохраняется после перезагрузки. Checkm8 такой особенности не имеет: после перезагрузки он превращается в тыкву требуется повторный взлом устройства, которое нужно подключить к компьютеру и перевести в режим восстановления прошивки. Отсюда выводится еще одна характеристика уязвимости: ее невозможно эксплуатировать удаленно.

В интервью ArsTechnica автор эксплойта высказывается более осторожно, чем у себя в Твиттере. Почти на все вопросы журналистов он отвечает: «возможно» и «зависит от обстоятельств». Точно определен только список подверженных устройств: это все мобильные девайсы Apple, начиная с iPhone 4 и заканчивая iPhone X. Хотя здесь правильно будет говорить о версиях SoC: подвержены почти все вплоть до A11, исключая только самые современные смартфоны и планшеты на базе чипов A12 и A13. В статье Arstechnica также упоминается, что баг присутствует и в часах Apple Watch. Успешная эксплуатация уязвимости позволяет как минимум расшифровать загрузочный код устройства и включить интерфейс для отладки (JTAG).

Больше про Хуавей:  Как отключить шагомер на Huawei и Honor

Хакер axi0mX у себя в Твиттере говорит о невероятной пользе такого эксплойта для исследователей безопасности устройств Apple. И возможно, «пользу» (если правильно говорить об уязвимости, опубликованной в обход вендора) только исследователи и оценят. Пока что не существует полноценного джейлбрейка любого из подверженных устройств, позволяющего получить права суперпользователя в iOS и установить альтернативный магазин приложений Cydia.

Гарантии доступа к данным на устройстве эксплойт, как мы уже упоминали, тоже не дает. Поэтому его ценность для государственных органов и всех, кто желает получить информацию с заблокированного устройства без ведома пользователя, сомнительна. У тех, кто занимается криминалистической экспертизой устройств, наверняка есть другие способы получения информации, и, как было показано недавно, они могут оказаться проще, чем свежеоткрытый эксплойт. Список возможностей из твита выше (перепрошивка устройства на любую другую версию iOS, загрузка альтернативных iOS, брутфорс пароля пользователя) — это скорее потенциальные последствия, а не суровая реальность.

Впрочем, посмотрим. Через два дня после первой публикации axi0mX выложил видео, в котором показывает загрузку самой свежей версии iOS в режиме verbose. Само по себе это также ничего не доказывает, но говорит о том, что специалистам теперь будет чем заняться. Рекомендации (капитанские, но все же важные) такие: если вы политик диссидент параноик хотите максимально защитить свои данные на iPhone, пора купить устройство посвежее, не подверженное данной уязвимости. Установите не простой пасскод из цифр, а полноценный пароль с комбинацией цифр, букв и спецсимволов. Это затруднит брутфорс, даже если появится возможность для его проведения. Всем остальным переживать пока не стоит: Apple вполне способна снизить потенциал незакрываемой уязвимости в ROM там, где софт можно обновить. Несмотря на победный тон сообщений, даже сам автор эксплойта признает, что безопасность у Apple на высоте. Интересно, не изменится ли это отношение благодаря новым открытиям, которые исследователи сделают, воспользовавшись эксплойтом? Судя по всему, для изучения кода iOS без санкции Apple это почти идеальный инструмент.

Disclaimer: Мнения, изложенные в этом дайджесте, могут не совпадать с официальной позицией «Лаборатории Касперского». Дорогая редакция вообще рекомендует относиться к любым мнениям со здоровым скептицизмом.

Непосредственная настройка и установка

Начнём с конфигурации загрузчика. В этом нам поможет готовая программа, которую можно взять здесь. Я использовал GUI-версию. В ней нужно выбрать бинарный файл, предназначенный для записи в OptionROM. В конфигурации я сразу переключил режим вывода на текстовый (потому что графический сильно тормозил), отключил анимации.

Больше про Хуавей:  Срок действия пароля истек войдите в учетную запись на андроиде как исправить

Для удобства использования лучше поставить галочки INT19 и Startup Hotkey. Теперь Plop будет загружаться только при нажатии комбинации Ctrl A, практически как Boot Menu в современных компьютерах. По вкусу можно установить таймер и устройство по умолчанию.

Далее требуется нажать кнопку «Configure plpbt.bin» и образ готов к подготовке к прошивке. Его нужно сконвертировать в ROM-файл. Для этого потребуется ещё один инструмент c сайта загрузчика. К сожалению он консольный. Параметрами программе нужно передать имя образа, сконфигурированного на предыдущем шаге и имя конечного файла.

Так же требуется задать идентификаторы вендора и самого устройства. На сайте уже есть готовый пример для rtl8139. Для других карт идентификаторы можно считать из родного BootROM автоматически с помощью ключа -grabid. Необязательный ключ -nodisable. Без него Plop будет каждый раз при включении предлагать отключить ПЗУ сетевой карты, но нам это не нужно, поскольку меню и так будет загружаться только с сочетанием клавиш.

Теперь можно переходить к прошивке. Я использую программатор MiniPro, но подойдёт любой другой, который поддерживает EEPROM и Flash до 64 килобайт. ПЗУ можно взять 27, 28 или 29 серий нужного объёма. Процесс прошивки проходит как обычно. Выбрать микросхему, выбрать образ и нажать на кнопку записи.

После всех этих действий остаётся вставить микросхему памяти в панельку на карте, а карту вставить в слот на материнской плате. Единственное, возможно потребуется включить BootROM в конфигурации самой карты. Я сделал это с помощью программы для DOS, поставляющейся вместе с драйвером.

Если всё сделано правильно, после определения дисков и флоппи появится строка сообщающая, что BootROM успешно загружен и предложение нажать Ctrl A для загрузки в меню.

1 Звездаслабоватона троечкухорошо!просто отлично! (1 оценок, среднее: 4,00 из 5)
Загрузка...

Расскажите нам ваше мнение:

Ваш адрес email не будет опубликован.