Защита среды, предшествующей загрузке операционной системы, с помощью UEFI

Мы получили некоторое количество комментариев относительно того, как корпорация Майкрософт реализовала безопасную загрузку. К сожалению, в этих комментариях рассматривались сценарии, где данный вопрос был представлен неверно. Поэтому мы решили использовать эту статью для более подробного описания того, как UEFI обеспечивает безопасную загрузку и предоставляет расширенные возможности производителям ПК. Важнее всего понять то, что мы предоставляем возможности, которые обеспечивают желающим клиентам полностью надежный подход к безопасности, но при этом позволяют сохранить полный контроль над компьютером. Эту статью написал Тони Мангефест (Tony Mangefeste) из нашей группы Ecosystem. --Стивен

Краткий обзор

  • UEFI позволяет встроенному ПО реализовать политику безопасности.
  • Безопасная загрузка — это протокол UEFI, а не компонент операционной системы Windows 8.
  • Безопасная загрузка UEFI входит в состав архитектуры безопасной загрузки Windows 8.
  • Операционная система Windows 8 использует безопасную загрузку для обеспечения безопасности среды, предшествующей загрузке операционной системы.
  • Безопасная загрузка не "блокирует" загрузчики операционной системы, она представляет собой политику, которая позволяет встроенному ПО проверять подлинность компонентов.
  • Поставщики вычислительной техники имеют возможность настраивать собственное встроенное ПО в соответствии с потребностями клиентов, изменяя уровень управления сертификатами и политиками на своей платформе.
  • Корпорация Майкрософт не задает и не контролирует параметры во встроенном ПО компьютера, которые реализуют безопасную загрузку из любой операционной системы, отличной от Windows, и управляют такой загрузкой.

Полная картина — отсутствие угроз безопасности

Протокол безопасной загрузки UEFI является основой архитектурно независимого подхода к безопасности платформы и встроенного ПО. Безопасная загрузка, в основе которой лежит использование процесса инфраструктуры открытых ключей для проверки образов встроенного ПО перед разрешением их выполнения, помогает снизить риск атак, направленных на загрузчики. Корпорация Майкрософт внедрила данный протокол в Windows 8, чтобы повысить безопасность платформы для своих клиентов.

 Схема архитектуры целостности платформы Windows 8: 1. Безопасная загрузка предотвращает запуск неизвестного загрузчика ОС. 2. Ядро прежде всего запускает драйверы Early Launch Anti-Malware (ELAM), которые реализуют политику для сторонних драйверов и приложений. 3. Во время загрузки начальное состояние системы было записано в доверенном платформенном модуле. 4. Чтобы подтвердить исправность работы клиента, антивредоносное ПО может передать сведения об измерениях доверенного платформенного модуля удаленному средству проверки.
Рис. 1. Архитектура целостности платформы

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

Для клиентов Windows корпорация Майкрософт применяет программу сертификации Windows, которая позволяет убедиться, что на системах, поставляемых с ОС Windows 8, по умолчанию включена безопасная загрузка, что встроенное ПО не допускает программного управления безопасной загрузкой (чтобы предотвратить отключение политик безопасности во встроенном ПО вредоносной программой) и что поставщики вычислительной техники предотвращают несанкционированные попытки обновления встроенного ПО, которые могут нарушить целостность системы.

Большинство этих политик представлены во встроенном ПО UEFI не впервые, и на большей части современных ПК реализована некоторая форма проверки встроенного ПО. Даже имеющаяся поддержка старых компонентов, таких как пароль BIOS, является формой безопасной загрузки, которая на протяжении многих лет находилась под контролем поставщиков вычислительной техники и пользователей. Однако с помощью безопасной загрузки и UEFI отрасль в целом и корпорация Майкрософт в частности поднимают уровень обеспечения целостности и работоспособности системы, а также предоставления клиентам надежной защиты от растущего числа угроз.

Что такое UEFI?

За управление UEFI (Unified Extensible Firmware Interface — единый интерфейс EFI) отвечает форум UEFI, группа поставщиков наборов микросхем, оборудования, систем, встроенного ПО и операционных систем. Этот форум разрабатывает спецификации, средства проверки и эталонные реализации, которые используются на многих ПК с UEFI. Корпорация Майкрософт является членом правления на данном форуме, кроме того, любой человек и любая компания могут присоединиться к этому форуму совершенно бесплатно.

UEFI определяет для вашего компьютера интерфейс встроенного ПО нового поколения. Встроенное ПО базовой системы ввода-вывода (BIOS), изначально написанное в виде единой сборки и использующее программные прерывания для ввода-вывода, с самого начала стало определяющим фактором для экосистемы ПК, однако изменения в области вычислительных систем проложили путь для внедрения определения "современного встроенного ПО" в следующем поколении планшетов и устройств.

Цель UEFI заключается в определении стандартного способа взаимодействия операционной системы со встроенным ПО платформы во время процесса загрузки. До появления UEFI основным механизмом взаимодействия с оборудованием во время процесса загрузки были программные прерывания. Современные компьютеры могут обеспечивать более быстрое и эффективное блочное выполнение операций ввода-вывода между оборудованием и программным обеспечением, и UEFI позволяет разработчикам реализовать полный потенциал своего оборудования.

UEFI позволяет реализовать модульную структуру встроенного ПО, которая предоставляет разработчикам оборудования и систем значительную гибкость в разработке встроенного ПО для более требовательных современных вычислительных сред. Тогда как ввод-вывод был ограничен программными прерываниями, UEFI продвигает концепцию стандартов написания кода на базе событий и без привязки к архитектуре.

Что такое безопасная загрузка?

UEFI имеет процесс проверки встроенного ПО, который называется безопасной загрузкой, что отражено в главе 27 спецификации UEFI 2.3.1. Безопасная загрузка определяет, как встроенное ПО платформы управляет сертификатами безопасности, проверкой встроенного ПО и реализацией интерфейса (протокола) между встроенным ПО и операционной системой.

Архитектура целостности платформы корпорации Майкрософт создает корень доверия со встроенным ПО платформы с помощью безопасной загрузки UEFI и хранимых во встроенном ПО сертификатов. Растущая тенденция в области средств эксплуатации уязвимостей, используемых вредоносными программами, заключается в использовании пути загрузки в качестве основного направления атаки. Противодействие этому классу атак было затруднено, так как антивредоносное ПО может быть заблокировано вредоносными программами, препятствующими его полной загрузке. Благодаря архитектуре безопасной загрузки в операционной системе Windows 8 и созданному корню доверия клиент защищен от выполнения вредоносного кода в пути загрузки, так как перед операционной системой разрешен запуск только подписанных и сертифицированных "известных" загрузчиков и кода.

В большинстве современных компьютеров среда, предшествующая загрузке операционной системы, уязвима для атак, осуществляемых с помощью передачи функций загрузчика возможным вредоносным загрузчикам. Эти загрузчики остаются необнаруженными мерами безопасности операционной системы и антивредоносным ПО.

Существующие процессы загрузки: BIOS > код любого загрузчика ОС > запуск ОС
Рис. 2. Старый путь загрузки BIOS

Windows 8 устраняет данную уязвимость с помощью безопасной загрузки UEFI и использует политику из встроенного ПО вместе с сертификатами, чтобы разрешить выполнение только правильно подписанных и прошедших проверку подлинности компонентов.

Безопасная загрузка Windows 8: собственный UEFI 2.3.1 > только проверенный загрузчик ОС > запуск ОС
Рис. 3. Путь безопасной загрузки при использовании UEFI

Безопасная загрузка является всего лишь частью мер по обеспечению целостности платформы Windows 8. Наравне с UEFI корпорация Майкрософт проводит стратегию по реализации целостного подхода к другому доступному оборудованию для дальнейшего повышения безопасности платформы.

Краткое описание того, как это работает

При включении питания компьютера запускается процесс выполнения кода, который настраивает процессор, память и периферийные устройства, подготавливая их к выполнению операционной системы. Этот процесс выполняется одинаково для всех платформ независимо от архитектур, на которых они основаны (x86, ARM и т. д.).

Вскоре после включения питания системы и перед передачей управления загрузчику ОС встроенной ПО проверяет сигнатуру кода встроенного ПО, присутствующего на периферийных устройствах, таких как сетевые карты, запоминающие устройства или видеоадаптеры. Этот код на устройствах, называемый дополнительными ПЗУ, продолжает процедуру настройки, обеспечивая подготовку периферийных устройств к передаче управления операционной системе.

Во время этой части процесса загрузки встроенное ПО проверяет внедренную сигнатуру внутри модуля встроенного ПО, который очень похож на приложение, и если эта сигнатура присутствует в базе данных сигнатур во встроенном ПО, то этот модуль получает разрешение на выполнение. Такие сигнатуры хранятся в базах данных во встроенном ПО. Эти базы данных являются списками с разрешенными и запрещенными элементами, определяющими, может ли продолжаться процесс загрузки.

Схема со списком разрешенных элементов и списками запрещенных элементов (хэши вредоносных программ), управляемыми KEK и сертификатами ключа платформы
Рис. 4. Базы данных безопасности для сертификатов

На данном рисунке представлена иерархия сигнатур и ключей в системе с безопасной загрузкой. Безопасность системы обеспечивается с помощью ключа платформы, который поставщик вычислительной техники устанавливает во встроенном ПО в процессе производства. Этот процесс используется для большинства поставляемых систем независимо от того, основаны ли они на UEFI или на старой системе BIOS. (Приложения, такие как служебные программы обновления встроенного ПО, используют ключ платформы для защиты образа встроенного ПО.) Другие ключи используются протоколом безопасной загрузки для защиты доступа к базам данных, в которых хранятся ключи, разрешающие или запрещающие выполнение встроенного ПО.

Разрешенная база данных содержит ключи, представляющие надежные компоненты встроенного ПО и, что важнее, загрузчики ОС. Другая база данных содержит хэши вредоносных программ и встроенного ПО и блокирует выполнение этих вредоносных компонентов. Преимущество таких политик заключается в подписании встроенного ПО с помощью Authenticode и в инфраструктуре открытых ключей. Инфраструктура открытых ключей представляет собой хорошо организованный процесс для создания, контроля и отзыва сертификатов, которые устанавливают отношение доверия во время обмена информацией. Инфраструктура открытых ключей — это ядро модели безопасности для безопасной загрузки.

Что требуется для безопасной загрузки?

Для использования безопасной загрузки требуется встроенное ПО, которое соответствует требованиям UEFI редакции 2.3.1 или превышает их. Форум UEFI утвердил последнюю редакцию, которая обновила политики главы 27, чтобы включить в существующий протокол безопасной загрузки переменные с проверкой подлинности по времени, более устойчивые ключи шифрования и разъяснение аспектов, связанных с хранением сертификатов.

Для пользователя, приобретающего компьютер, данный компонент будет прозрачным. Преимущество от него заключается в том, что система приобретает дополнительную меру защиты от атак с использованием пакетов программ bootkit и rootkit, нацеленных на уязвимости системы, которая действует еще до загрузки операционной системы, как описано выше.

Кто осуществляет контроль?

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

Демонстрация такого управления доступна на планшете Samsung с предварительной версией Windows 8 для разработчиков, который был предоставлен участникам //BUILD/. На приведенном ниже снимке экрана видно, что при разработке встроенного ПО мы предусмотрели возможность отключения безопасной загрузки клиентом. Однако делать это следует только на свой страх и риск. Поставщики вычислительной техники могут выбирать любые способы реализации данной поддержки и дополнительно настраивать параметры в соответствии с приведенным выше описанием, чтобы предоставить своим клиентам уникальные предложения ценности. Операционная система Windows просто обеспечивает отличную поддержку для сценария, который, по нашему мнению, окажется полезным для пользователей и корпоративных клиентов.

Изображение консоли с параметрами для конфигурации доверенного платформенного модуля: Enable virtualization [включен], CSM Support [отключен], Attempt Secure Boot [включен], Display Rev. Info - Intel UEFI...
Рис. 5. Настройка безопасной загрузки компьютера Samsung

Тони Мангефест (Tony Mangefeste)
Группа Ecosystem