В этой статье мы разберем схему функционирования и устройство прошивки UEFI на материнских платах с процессорами и чипсетами Intel, протестируем ее с помощью CHIPSEC Framework и сделаем ряд не очень утешительных выводов. 🙂
 

Unified Extensible Firmware Interface

После подачи питания на аппаратную платформу ЭВМ должна произойти корректная инициализация оборудования и выбор загрузчика операционной системы. Если раньше эту функцию выполнял всем известный BIOS Legacy, то со временем производители аппаратных платформ пришли к использованию более усовершенствованной технологии — UEFI.

Некоторые отличия между BIOS Legacy и UEFI отражены в сравнительной таблице.

Характеристики BIOS Legacy Характеристики UEFI
Поддерживаемые режимы работы процессора Режим реальных адресов Режим реальных адресов, защищенный режим работы процессора
Поддержка виртуальной памяти Не поддерживает Поддерживает
Объем используемой оперативной памяти 1 Мбайт Не ограничен
Пространство опционального ПЗУ (Option ROM) 1 Мбайт Не ограничено
Доступ к регистрам 16-битный 16-битный, 32-битный, 64-битный
Независимость от архитектуры Не обеспечивает Обеспечивает
Язык программирования Ассемблер Си/ассемблер
Функция безопасной загрузки Отсутствует Присутствует
Таблица разделов жесткого диска MBR GPT

Спецификация UEFI описывает интерфейс между операционной системой и программным обеспечением аппаратной платформы во время загрузки. Основная идея, заложенная в спецификации, — сделать прошивку модульной и расширяемой.

Изменениями в спецификации управляет сообщество Unified Extensible Firmware Interface Forum, основная задача которого — расширять и улучшать существующую спецификацию, добавляя новые функциональные возможности и исправляя текущие недостатки. Для разработчиков программных компонентов спецификация UEFI предоставляет возможности повторного использования кода, расширяемости, модульности, а также легкого прототипирования в процессе разработки.

Хорошо это или плохо? С одной стороны, расширяемость и модульность позволяют разработчикам наделять прошивку дополнительными функциональными возможностями. С другой — обилие программного кода делает ее более уязвимой. Так как низкоуровневое программное обеспечение прошивки UEFI первостепенно в системе, уровень защищенности прошивки играет основную роль при оценке защищенности всей ЭВМ.

Существуют ли универсальные методы компрометации защиты UEFI?

Загрузка ... Загрузка ...
 

Аппаратное расположение прошивки UEFI

Совокупность всех прошивок в системе называют прошивкой платформы. Как правило, она расположена во флеш-памяти SPI (Flash memory). В этой же памяти располагается прошивка UEFI.

Аппаратное расположение прошивки платформы
Аппаратное расположение прошивки платформы

Для того чтобы система могла различать прошивки между собой, флеш-память делится на регионы. Доступ к регионам разграничивает встроенный в чипсет PCH SPI-контроллер (в современных системах PCH играет роль южного моста). На скриншоте представлен дамп флеш-памяти SPI в утилите UEFITool.

Дамп флеш-памяти SPI в UEFITool
Дамп флеш-памяти SPI в UEFITool

Описание некоторых регионов флеш-памяти SPI:

  • Flash Descriptor (Descriptor region) — регион дескриптора, содержащий основные смещения и настройки флеш-памяти SPI;
  • GbE region — регион, содержащий основные настройки сетевой карты;
  • ME region — регион, содержащий прошивку ME (ME выполняет функции управления энергопотреблением, функции инициализации и запуска основного процессора);
  • UEFI region (BIOS region) — содержит прошивку UEFI;
  • PDR region — регион, предназначенный для описания возможностей, зависящих от платформы.
 

Образы и протоколы в UEFI

Спецификация UEFI позволяет расширять прошивку через загрузку образов. Образ в UEFI может быть представлен в виде отдельного драйвера или приложения (наглядный пример — приложение UEFI Shell). Структура любого образа описывается форматом PE32/PE32+.

Расширение, а также идентификация компонентов UEFI выполняется с помощью GUID-записей. GUID представляет собой уникальный 128-битный идентификатор, соответствующий тому или иному компоненту прошивки.

Некоторые образы UEFI в UEFITool
Некоторые образы UEFI в UEFITool

Любое устройство или образ в UEFI имеют собственный протокол обработки. Каждый протокол состоит из GUID и структуры интерфейса протокола. Структура интерфейса протокола содержит функции и данные, которые используются для доступа к тому или иному устройству. Управление протоколами обеспечивают специальные службы UEFI (LocateProtocol, OpenProtocol и другие).

 

Основные фазы функционирования ПО UEFI

Работу ПО UEFI условно можно разбить на два этапа:

  • во время инициализации платформы;
  • во время загрузки и работы ОС.
Схема функционирования прошивки UEFI во время инициализации платформы
Схема функционирования прошивки UEFI во время инициализации платформы

Ниже описано, за что отвечает каждая фаза.

SEC:

  • обработка всех событий перезапуска платформы;
  • создание хранилища временной памяти;
  • проверка целостности и подлинности элементов прошивки;
  • подготовка и передача необходимой информации в следующую фазу.

PEI:

  • инициализация постоянной памяти;
  • описание памяти в специальных структурах Hand-Off Blocks (HOBs);
  • описание адресов размещений микропрограмм в HOBs-структурах;
  • передача управления в фазу среды выполнения драйверов.

DXE:

  • инициализация служб загрузки, служб реального времени выполнения и служб DXE (DXE Services);
  • обнаружение и выполнение драйверов DXE;
  • инициализация процессора, набора микросхем и компонентов платформы.

BDS:

  • инициализация консольных устройств;
  • загрузка драйверов устройств;
  • попытка загрузки в ОС;
  • если попытка не удалась, повторно выполняется фаза DXE.

В качестве отдельной фазы выделяют режим системного управления (SMM).

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии