
Безопасность дополнительных ПЗУ в macOS
Безопасность дополнительных ПЗУ на компьютере Mac с чипом безопасности Apple T2
Устройства Thunderbolt и PCIe могут иметь дополнительное ПЗУ (OROM), физически подключенное к устройству. (Обычно это не настоящее ПЗУ, а перезаписываемый чип, в котором хранится прошивка.) В системах на основе UEFI эта прошивка обычно является драйвером UEFI, который считывается прошивкой UEFI и запускается. Запускаемый код должен инициализировать и настроить оборудование, с которого он был извлечен, чтобы остальная часть прошивки могла использовать это оборудование. Благодаря этой функции специализированное оборудование сторонних производителей может загружаться и работать на самых ранних этапах процесса загрузки, что позволяет, например, выполнять загрузку с внешних массивов RAID.
Однако, поскольку устройства OROM обычно являются перезаписываемыми, если злоумышленник перезапишет OROM подлинного периферийного устройства, то код злоумышленника будет исполнен на раннем этапе процесса загрузки, и он сможет вмешаться в среду исполнения и нарушить целостность загружаемого впоследствии программного обеспечения. Кроме того, если злоумышленник подключит к системе вредоносное устройство, он также сможет исполнить вредоносный код.
На компьютерах Mac с macOS 10.12.3 и новее, продаваемых после 2011 г., OROM не исполняется по умолчанию во время загрузки Mac, если не было нажато специальное сочетание клавиш. Это сочетание клавиш защищало от непреднамеренного попадания вредоносного OROM в последовательность загрузки macOS. Стандартные настройки Утилиты пароля прошивки также были изменены. Теперь, если пользователь установил пароль прошивки, OROM не может исполняться, даже если нажато сочетание клавиш. Это не позволяло злоумышленнику, у которого есть физический доступ к компьютеру, преднамеренно добавить вредоносное OROM. Чтобы OROM исполнялось несмотря на установленный пароль прошивки, пользователь может задать другой параметр с помощью инструмента командной строки firmwarepasswd в macOS.
Безопасность песочницы OROM
В прошивку UEFI в macOS 10.15 был добавлен механизм помещения OROM в изолированную среду (песочницу) и отмены полномочий OROM. Обычно прошивка UEFI исполняет весь код, в том числе OROM, с максимальным уровнем прав процессора, называемым «кольцо 0», и одним общим пространством виртуальной памяти для всего кода и данных. Кольцо 0 — это уровень прав, на котором работает ядро macOS, а минимальному уровню прав соответствует кольцо 3, где запускаются приложения. Песочница OROM отменяет полномочия OROM, используя разделение виртуальной памяти аналогично тому, как это делает ядро, и переводя OROM в кольцо 3.

Песочница также значительно ограничивает интерфейсы, которые разрешено вызывать OROM (аналогично фильтрации системных вызовов в ядрах), и типы устройств, в качестве которых может регистрироваться OROM (аналогично списку разрешенных приложений). Эта схема имеет важное преимущество: вредоносные OROM больше не могут выполнять запись напрямую в память кольца 0. Все потому, что они ограничены очень узким и четко определенным интерфейсом песочницы. Этот ограниченный интерфейс значительно сокращает уязвимую область и вынуждает злоумышленников сначала покинуть песочницу и расширить свои полномочия.
Примечание. На компьютере Mac с чипом Apple в настоящее время не поддерживаются дополнительные ПЗУ.