Пользователь Reddit опубликовал исходный код некоторых компонентов iOS, отвечающих за загрузку операционной системы во время включения устройства. Код относится к версиям iOS 9.3.X, но вполне вероятно, что его части могут использоваться и в более поздних версиях системы. Публикация кода в открытом доступе может помочь специалистам найти уязвимости в системе, отмечает издание Motherboard.
Обычно во время включения устройства пользователь сразу видит экран загрузки операционной системы, но на самом деле процесс включения состоит из множества этапов. Сначала низкоуровневая прошивка инициализирует оборудование и загружает в оперативную память загрузчик операционной системы. После этого загрузчик загружает в память ядро системы, которое уже занимается загрузкой и настройкой остальных компонентов, необходимых для полноценной работы компьютера, к примеру, драйверов. Помимо этого в большинстве современных компьютеров и смартфонов есть компонент, который не дает запускать загрузчик и другой код, если он не подписан производителем. Это позволяет защитить устройство от вредоносного кода.
Обычно Apple не публикует исходные коды таких компонентов своих операционных систем, но теперь часть из них появилась в сети. Их опубликовал один из пользователей Reddit 22 сентября 2017 года, но СМИ обратили внимание на это сообщение только после того, как код опубликовали на GitHub. В опубликованном архиве содержится внутренняя документация и исходный код некоторых компонентов iOS, таких, как драйверы, но главные из них — это исходный код первичного загрузчика SecureROM и основного загрузчика операционной системы iBoot. При включении устройства сначала запускается именно SecureROM и проверяет последующие компоненты, в том числе и iBoot.
Стоит отметить, что опубликованные исходные коды относятся к версиям iOS 9.3.X, а на большинстве iOS-устройств установлена более поздняя версия. Помимо этого, пользователи Reddit отметили, что в архиве не хватает некоторых файлов, необходимых для компиляции работающей версии iBoot. Тем не менее, поскольку части кода могут использоваться в компонентах более новых версий, публикация исходных кодов этих компонентов может привести к нескольким последствиям.
Во-первых, исследователи в области компьютерной безопасности и злоумышленники смогут анализировать ранее недоступный исходный код и искать уязвимости, которые могут присутствовать и в самых последних версиях iOS. Во-вторых, во многом именно на обходе механизмов защиты во время загрузки системы основан джейлбрейк — операция, позволяющая расширить возможности iOS-устройств. Соответственно, знание о том, как именно устроены эти механизмы, может помочь найти новые способы взлома. Также публикация исходного кода SecureROM важна еще по одной причине — он прошит в самом чипе (системе на кристалле) и не может быть обновлен вместе с обычным обновлением iOS, даже если в нем найдут критическую уязвимость.
Менее месяца назад на серверах Apple произошла ошибка, из-за которой старые версии iOS на некоторое время стали снова подписанными. Благодаря этому некоторые пользователи смогли установить гораздо более старые версии системы на свои устройства, хотя обычно компания прекращает подписывать старые версии после выхода новых.
Григорий Копиев