поиск по сайту
О средствах доверенной загрузки для аппаратных платформ, реализующих спецификацию UEFI

О средствах доверенной загрузки для аппаратных платформ, реализующих спецификацию UEFI

 

C.C. Лыдин

Закрытое акционерное общество «ОКБ САПР», Москва, Россия

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

Ключевые слова: UEFI, BIOS, средства доверенной загрузки, профиль защиты.

Modules of trusted boot for hardware platforms based on UEFI

S.S. Lydin

Closed Joint Stock Company «OKB SAPR», Moscow, Russia

UEFI BIOS is the new generation firmware. Besides the convenient this new platform brings to us, it has completely different architecture with legacy BIOS, which leads some security concerns. This paper analyzes the possible security threats on UEFI BIOS architecture and defines the range of issues that must be resolved before the proper use of this architecture.

Keywords: UEFI, BIOS, Modules of trusted boot, protection profile.

Процесс загрузки компьютера и состав компонентов, задействованных в этом процессе, определяется архитектурой системы. На высоком уровне абстракции применительно к большинству компьютеров загрузку можно представить в виде совокупности этапов, показанных на рисунке 1.

Рисунок 1 — Последовательность загрузки компьютера на высоком уровне абстракции

Из числа представленных на рисунке 1 элементов последовательности основное внимание в данной статье уделяется базовой системе ввода-вывода (basic input/output system, BIOS). BIOS представляет собой первую микропрограмму, которая исполняется после включения питания компьютера и хранится в энергонезависимой памяти, как правило, микросхеме флеш-памяти на материнской плате компьютера. Основное назначение BIOS состоит в:

  • обеспечении инициализации и тестирования на низком уровне аппаратных компонентов компьютера, включая центральный процессор, динамическую оперативную память и др.;
  • передаче управления загрузчику операционной системы (ОС).

BIOS могут разрабатываться как производителями комплектного оборудования (original equipment manufacturer, OEM), так и независимыми разработчиками, а поставляются конечным пользователям — производителями материнских плат и компьютеров. Нужно добавить, что производители часто, в том числе перед поставкой, обновляют системное программное обеспечение для того, чтобы исправить ошибки, поддержать новое аппаратное обеспечение и блокировать уязвимости.

Блокирование уязвимостей BIOS составляет актуальную задачу, поскольку, очевидно, для потенциального нарушителя всегда предпочтительнее скомпрометировать тот компонент, который загружается раньше прочих — получение контроля на более раннем этапе позволяет распространить влияние и на последующие элементы, такие как код режима управления системой (System Management Mode, SMM), загрузчик, гипервизор, ОС. Если успешные атаки на программы, исполняемые в пользовательском режиме, при современном положении вещей позволяют нарушителю добиться преимуществ хотя и очень существенных, но всё-таки ограниченных областью действия атакованной программы, то вредоносный код, записанный в BIOS, может позволить получить полный контроль над системой. Положение усугубляется тем, что, поскольку системный BIOS запускается с высоким уровнем привилегий на ранней стадии загрузки системы, вредоносный код, исполняемый на уровне BIOS, очень трудно обнаружить; кроме того, он может использоваться для повторного «инфицирования» системы даже после того, как была произведена переустановка ОС или даже замена жесткого диска компьютера. В этих условиях, очевидно, BIOS и загрузчик должны восприниматься нарушителем как более привлекательные объекты атаки. Действительно, в прошлые годы было опубликовано довольно большое количество сообщений о моделях возможных атак именно на эти цели. В рамках настоящей статьи не целесообразно останавливаться на них подробно, достаточно упомянуть только о двух типовых примерах [1]:

  • атаки на BIOS, заключающиеся в подмене исходного кода BIOS вредоносным кодом BIOS, внедренным нарушителем;
  • атаки на загрузчик, заключающиеся в установке подконтрольного нарушителю так называемого «буткита» (bootkit, разновидность «руткита» (rootkit), который исполняется в режиме ядра), «инфицирующего» загрузчик. При этом «буткит» может использоваться для организации утечки чувствительной информации, обрабатываемой в процессе загрузки, такой как пароли шифрования информации на жестком диске.

Подводя краткий промежуточный итог, можно констатировать, что подмена микропрограммы BIOS вредоносным программным обеспечением в общем случае представляет опасную угрозу, которая может быть частью сложной атаки на информационную систему организации, направленной на достижение длительного отказа в обслуживании (если BIOS в результате атаки подвергается разрушению) или обеспечение долгосрочного функционирования вредоносного кода в составе системы (если в результате атаки производится «инфицирование» BIOS) [2].

Однако что касается практической стороны вопроса, следует отметить, что атаки на так называемый «традиционный» BIOS (Legacy BIOS), который до сих пор выступал в настоящей статье в качестве предмета рассмотрения, как правило, связаны с низким уровнем мотивации нарушителя к их реализации — в силу слабого уровня стандартизации «традиционного» BIOS. Попытка разработать и внедрить вредоносный код, который мог бы использовать одновременно уязвимости, например, систем HP, Dell и IBM, обычно рассматривается нарушителем как неэффективная, потому что эти системы работают по-разному и реализовать универсальный механизм атаки весьма затруднительно. Иными словами, «эксплойты» для «традиционных» BIOS отличаются высоким уровнем зависимости от системы — как от версии BIOS, так и частного случая реализации аппаратных компонентов, таких как чипсет материнской платы. Подавляющая часть существующего вредоносного кода исполняется на уровне ядра ОС и более высоких уровнях, так, чтобы существовала возможность использовать его на максимально широком множестве систем. В силу указанного обстоятельства известны лишь немногие практические реализации атак на уровне «традиционного» BIOS. В качестве характерного примера можно привести лишь вирус «Чернобыль», обнаруженный в 1998 году. Для современных компьютеров этот вирус неактуален, поскольку они не содержат уязвимостей, которые «Чернобылем» использовались [2].

Между тем, интенсивно осуществляемый в настоящее время переход от реализации «традиционного» BIOS к реализации, основанной на едином расширяемом микропрограммном интерфейсе (Unified Extensible Firmware Interface, UEFI), наряду с получением ряда функциональных преимуществ, в контексте обеспечения информационной безопасности характеризуется снижением для нарушителя сложности задачи внедрения вредоносного кода на уровне BIOS. Прежде чем привести подтверждения этому тезису, необходимо кратко ознакомиться с назначением и основными особенностями UEFI.

UEFI — это современный интерфейс между ОС и микропрограммами, управляющими низкоуровневыми функциями оборудования. Если последовательно придерживаться прежнего достаточно высокого уровня абстракции, процесс загрузки компьютера, использующего UEFI, формально представляется таким же, как и в случае с «традиционным» BIOS. Разница заключается в том, что код UEFI запускается, как правило, в современном 64-битном защищенном режиме работы процессора, тогда как код микропрограммы BIOS исполняется в 16-битном реальном режиме работы процессора. Однако в отличие от фактически неизменной по своему функциональному содержимому микропрограммы BIOS, система UEFI в сущности представляет собой программируемый интерфейс с довольно широким набором возможностей, совокупность которых придает ему черты самостоятельной операционной системы, пусть и облегченной. Основанием для подобной характеристики является то, что спецификация UEFI определяет, в частности, следующие элементы:

  • сервисы. В UEFI допускается два типа сервисов: загрузочные (boot services) и среды выполнения (runtime services). Первые функционируют только до загрузки ОС компьютера и обеспечивают взаимодействие с графическими и текстовыми терминалами, шинами и т. д., а сервисы среды выполнения доступны даже из ОС компьютера;
  • драйверы устройств. В UEFI реализуется платформонезависимая среда драйверов — EFI Byte Code (EBC). Взаимодействие ОС с драйверами устройств, как правило, осуществляется через EBC, что позволяет ОС компьютера использовать UEFI для базовой поддержки графических и коммуникационных функций до загрузки драйверов, установленных в ОС. Некоторые архитектурно-зависимые (non-EBC) драйверы имеют интерфейсы для использования ОС напрямую;
  • приложения. Независимо от загружаемой ОС программа UEFI поддерживает возможность запуска отдельных приложений, которые могут разрабатываться и устанавливаться по усмотрению производителей компьютеров. К числу таких приложений относится, например, оболочка UEFI (UEFI shell). Оболочка может быть загружена еще до запуска ОС компьютера и использоваться для выполнения различных приложений: утилит по установке и настройке операционных систем, файловых менеджеров, утилит для просмотра файлов и др. Команды оболочки также позволяют копировать или перемещать файлы и каталоги в поддерживаемых файловых системах, загружать и выгружать драйверы. Оболочка поддерживает командную строку и командные файлы, аналогичные командам и пакетным файлам DOS.

Кроме того, спецификация UEFI определяет возможность загрузки компьютера по сети с помощью протокола удаленной загрузки (preboot execution Environment, PXE) и доступа к загрузочным образам, хранящимся в сетях хранения данных (storage area network, SAN).

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

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

В сложившейся практике перечисленные функции реализуются средствами доверенной загрузки (СДЗ), под которыми понимаются программно-технические средства, которые реализует функции по предотвращению несанкционированного доступа к программным и (или) техническим ресурсам компьютера на этапе его загрузки.

СДЗ является элементом системы защиты информации и применяется на компьютере совместно с другими средствами защиты информации от несанкционированного доступа.

На протяжении многих лет и до настоящего времени СДЗ разрабатывались и совершенствовались в условиях использования совместно с «традиционными» BIOS. Это обстоятельство определяло их архитектуру и принципы функционирования. В частности, при использовании «традиционного» BIOS обоснованной является реализация принципа, согласно которому СДЗ начинает свою работу после выполнения системного BIOS и далее обеспечивает выполнение заданного набора требований доверия безопасности; при этом принимается, что код самого BIOS механизмами СДЗ проверять не нужно, поскольку, как было показано выше, атаки, связанные с подменой системного BIOS на практике по сути не реализуются. Но в том случае, если угроза подмены системного BIOS при использовании в информационной системе некоей организации все же признается актуальной, следует в установленном порядке проверить микропрограмму BIOS на наличие уязвимостей, позволяющих осуществить такую подмену. Данная проверка практически реализуема, поскольку общая архитектура и принципы функционирования «традиционного» BIOS хорошо известны, объем микропрограммного кода и набор функций весьма ограничен, а на выработку подходов к проведению различных исследований в распоряжении сообщества специалистов имелся не один десяток лет.

Ситуация выглядит совершенно иначе в случае использования UEFI BIOS:

  • все интерфейсы UEFI BIOS стандартизированы. Из этого следует то, что, в отличие от случая, когда используется «традиционный» BIOS, реализация атак на UEFI BIOS не состоит в сильной зависимости от архитектуры системы, и один и тот же «эксплойт» может использовать уязвимости на множестве компьютеров. В свою очередь, это означает, что сообщество больше не имеет права считать, что атаки на BIOS не реализуются на практике, что у нарушителя отсутствует для этого мотивация. Теоретические выводы подкрепляются и действительностью. Например, в [3] сообщается, что вследствие использования многими BIOS одного и того же кода обнаружены уязвимости, актуальные для 80% исследованных компьютеров, включая модели Dell, Lenovo и HP; при этом уязвимости было столь легко обнаружить, что удалось даже написать скрипт для автоматизации этого процесса, с помощью которого было выявлено множество уязвимостей. Далее, на конференции CanSecWest Vancouver 2015 исследователи из Legbacore продемонстрировали способ внедрения низкоуровневой троянской компоненты LightEater [4]. Действуя на уровне UEFI, этот «буткит» остается невидимым для антивирусов. В проведенной демонстрации использовались материнские платы производства Acer, Asus, Gigabyte, Foxconn и MSI. В некоторых материнских платах удалось записать во флеш-память BIOS недопустимую инструкцию через модифицированный драйвер ядра, в результате которой плата отказывалась загружаться до физической замены чипа. В целом это напоминает новый виток развития вирусов типа «Чернобыль», но с гораздо более серьёзными последствиями. В целом эти выводы подтверждаются и многими другими свидетельствами (см., например, [5], [6], [7]).
  • UEFI BIOS имеет несоизмеримо более богатый набор функциональных возможностей (в качестве иллюстрации, дополнительной к тем многим, что уже были приведены ранее, можно отметить, например, что объем спецификации UEFI BIOS версии 2.6, последней на сегодняшней день, составляет более 2500 страниц), состав которого может существенно отличаться в различных системах в зависимости от предпочтений производителя. Это означает, во-первых, что проверить UEFI BIOS теми же методами, что использовались при проверке «традиционного» BIOS, не удастся, а во-вторых, усложнение и расширение его функциональности неизбежно влечет за собою увеличение «площади поверхности» для проведения разнообразных атак;
  • наличие широкого набора функций прикладного значения и наличие принципиальной возможности осуществления таких атак на UEFI BIOS, которые актуальны сразу для множества компьютеров, заставляет пересмотреть подход к процедурам обновления системного BIOS. Следует признать, что на практике в информационных системах организаций процедура обновления «традиционного» BIOS представляла собой весьма редкое явление или же вообще не производилась. Очевидно, в случае с UEFI BIOS ее придется производить (локально и (или) через сеть) значительно чаще, что, в свою очередь, открывает новый класс уязвимостей для системного BIOS. В пользу значимости данной проблемы свидетельствует хотя бы то, что NIST выпустил специальные рекомендации по снижению вероятности угроз UEFI BIOS, большая часть содержания которых посвящена обеспечению защиты именно процедур обновления [2].

Таким образом, можно констатировать, что принципы обеспечения доверенной загрузки систем с UEFI BIOS должны принципиально отличаться от тех, что на протяжении многих лет применялись для систем на основе «традиционного» BIOS. Эти различия, по-видимому, обусловливают необходимость выработки нового подхода как для установления требований безопасности, которым должно удовлетворять соответствующее СДЗ, так и нового подхода к формированию со стороны регулятора заключения о соответствии продукта предъявленным к нему требованиям безопасности информации.

В качестве реакции на данный тезис может последовать возражение, что, как известно, в соответствии с информационным письмом ФСТЭК России от 06.02.2014 N 240/24/405 «Об утверждении Требований к средствам доверенной загрузки» с 1 января 2014 года сертификация средств защиты информации, реализующих функции доверенной загрузки, в системе сертификации ФСТЭК России проводится на соответствие утвержденным Требованиям к средствам доверенной загрузки. И поскольку данные требования разрабатывались и утверждались в условиях, когда UEFI BIOS уже получил достаточно широкое распространение, от разработчика, может быть, не требуется ничего иного, как выполнить указанные требования, а от оценщика — в ходе сертификационных испытаний проверить соответствие СДЗ требованиям, изложенным в профилях защиты СДЗ.

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

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

Кроме того, профили защиты СДЗ основываются на предположении, что среда функционирования СДЗ должна обеспечивать невозможность отключения (обхода) компонентов С. З. Фактически это означает, что та или иная организация должна каким-то образом обеспечить, чтобы с помощью механизмов UEFI BIOS используемых в ней компьютеров нельзя было отключить компоненты С. З. Ответ на вопрос о том, каким образом это можно обеспечить в условиях, когда UEFI BIOS в сущности представляет собой обновляемую операционную систему с переменным составом элементов и большим числом функциональных возможностей, неочевиден, хотя попытки его отыскать предпринимаются [8]. Открытыми остаются и другие вопросы, в частности, должно ли СДЗ каким-то образом обеспечивать безопасное обновление BIOS, и если нет, то какой компонент подсистемы информационной безопасности должен контролировать процедуру обновления; или каким образом СДЗ должно расценивать попытку загрузки компьютера по сети и т. д.

Разумеется, все изложенное не означает, что проблема безопасности, связанная с использованием UEFI BIOS, не решаема в принципе. На все вопросы, конечно, существуют ответы, и могут быть разработаны как соответствующие технические решения, так и методы проверки соответствия этих решений требованиям безопасности информации. Но для этого сейчас требуется еще приложить существенные усилия со стороны сообщества специалистов по информационной безопасности, направленные в том числе, если не на разработку отдельных профилей защиты для систем с UEFI BIOS (хотя этот шаг выглядит логически обоснованным, поскольку среда функционирования СДЗ, содержащая в своем составе «традиционный» BIOS, кардинально отличается от среды функционирования СДЗ, содержащей UEFI BIOS, и, следовательно, состав даже высокоуровневых требований безопасности как к СДЗ, так и к его среде функционирования может отличаться), то, по крайней мере, на разработку методических материалов по реализации и оценке требований к таким системам на основе результатов накопления научно-технического опыта. В противном случае выполнение требований может превратиться в пустую формальность и привести к ситуации, когда будут разрабатываться СДЗ, которые полностью удовлетворяют положениям нормативных документов и используются при оснащении компьютеров в коммерческих и государственных организациях, а нейтрализация актуальных угроз и реализация целей информационной безопасности при этом обеспечиваться не будет. При этом внешне ситуация может выглядеть абсолютно естественно, существующие недостатки окажутся только отретушированы, а не искоренены.

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

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

Список литературы

  • Xiaoyu Ruan. Platform Embedded Security Technology Revealed // Apress, 2014.
  • David Cooper, William Polk, Andrew Regenscheid, MurugiahSouppaya. BIOS Protection Guidelines. // NIST Special Publication 800-147, April 2011.
  • Kim Zetter. Hacking BIOS Chips Isnʼt Just the NSAʼs Domain Anymore. // URL: http://www.wired.com/2015/03/researchers-uncover-way-hack-bios-undermine-secure-operating-systems (дата обращения: 19.04.2016).
  • Corey Kallenberg and Xeno Kovah, LegbaCore. How many million BIOSes would you like to infect? // URL: https://reverse.put.as/wp-content/uploads/2016/01/HowManyMillionBIOSesWouldYouLikeToInfect_Whitepaper_v1.pdf (дата обращения: 19.04.2016).
  • Michael Mimoso. NEW BIOS IMPLANT, VULNERABILITY DISCOVERY TOOL TO DEBUT AT CANSECWEST. // URL: https://threatpost.com/new-bios-implant-vulnerability-discovery-tool-to-debut-at-cansecwest/111710/ (дата обращения: 19.04.2016).
  • Darren Pauli. Noobs can pwn worldʼs most popular BIOSes in two minutes. // URL: http://www.theregister.co.uk/19.03.2015/cansecwest_talk_bioses_hack/ (дата обращения: 19.04.2016).
  • Thomas Fox-Brewster. 'Voodoo' Hackers: Stealing Secrets From Snowdenʼs Favorite OS Is Easier Than Youʼd Think. // URL: http://www.forbes.com/sites/thomasbrewster/18.03.2015/hacking-tails-with-rootkits/#6537d0596143 (дата обращения: 19.04.2016).
  • Алтухов А. А. Неатомарный взгляд на РКБ как на композицию перехвата управления и контроля целостности. // Комплексная защита информации: материалы XX науч.-практ. конф., Минск, 19–21 мая 2015 г. — Минск: РИВШ, 2015, с 53-55.