
Среды recoveryOS и диагностики для компьютера Mac с процессором Intel
recoveryOS
Система recoveryOS полностью отделена от основной системы macOS, и все ее содержимое хранится в файле образа диска с именем BaseSystem.dmg. Также имеется связанный с ним файл BaseSystem.chunklist, который используется для проверки целостности BaseSystem.dmg. Список фрагментов представляет собой серию хешей для 10‑мегабайтных фрагментов BaseSystem.dmg. Прошивка унифицированного расширяемого интерфейса (UEFI) оценивает подпись файла списка фрагментов, а затем поочередно оценивает хеши фрагментов из файла BaseSystem.dmg. помогая убедиться, что они соответствуют подписанному содержимому списка фрагментов. Если один из хешей не совпадает, загрузка из локальной среды recoveryOS прерывается и прошивка UEFI пытается выполнить загрузку из recoveryOS в интернете.
Если проверка пройдена успешно, прошивка UEFI подключает BaseSystem.dmg в качестве диска оперативной памяти и запускает содержащийся в нем файл boot.efi. Прошивке UEFI не нужно проверять boot.efi, а boot.efi не нужно проверять ядро, так как целостность всего содержимого операционной системы уже была проверена, а эти элементы составляют только ее часть.
Диагностика Apple
Процедура загрузки локальной диагностической среды в основном аналогична запуску recoveryOS. При этом используются отдельные файлы AppleDiagnostics.dmg и AppleDiagnostics.chunklist, однако они проверяются так же, как файлы BaseSystem. Вместо запуска boot.efi прошивка UEFI запускает из образа диска (файла .dmg) файл с именем diags.efi, отвечающий за вызов ряда других драйверов UEFI, которые могут устанавливать соединение с оборудованием и проверять его на наличие ошибок.
Среды recoveryOS и среды диагностики, загружаемые из интернета
Если при запуске локальной среды восстановления или диагностики произошла ошибка, прошивка UEFI пытается загрузить образы из интернета. (Пользователь также может запросить загрузку образов из интернета, нажав при загрузке особое сочетание клавиш.) Проверка целостности образов диска и списков фрагментов, загруженных с сервера восстановления операционной системы, выполняется таким же способом, как для образов, извлеченных с устройства хранения.
Поскольку подключение к серверу восстановления операционной системы выполняется по протоколу HTTP, все полностью загруженные данные проверяются на целостность (как описано ранее). Таким образом они защищаются от манипуляций, если злоумышленник контролирует сеть. Если отдельный фрагмент не проходит проверку целостности, система запрашивает его 11 раз у сервера восстановления операционной системы, прежде чем прекратить попытки и выдать ошибку.
После того как в 2011 году на компьютеры Mac были добавлены режимы восстановления и диагностики, загружаемые из интернета, было принято решение использовать более простой транспортный протокол HTTP и выполнять аутентифиĸацию содержимого с помощью механизма списка фрагментов вместо реализации в прошивке UEFI более сложного транспорта HTTPS, что повышает уязвимость прошивки.
Когда в 2011 году компания Apple добавила на компьютеры Mac режимы восстановления и среды диагностики, загружаемые из интернета, было решено использовать более простой транспортный протокол HTTP и выполнять аутентифиĸацию содержимого с помощью механизма списка фрагментов, не реализуя в прошивке UEFI более сложную функциональность HTTPS, которая повышает уязвимость прошивки.