BIOS: старый, но доминирующий
Лет 25 назад BIOS предназначался для запуска операционной системы. Первый компьютеры использовали перфокарты в качестве загрузочного средства, после чего они были заменены ROM с простым интерпретатором. Сегодня можно выбирать множество загрузочных средств, таких как дискеты, жёсткие диски, оптические приводы и сетевые ресурсы. Но работа с компонентами всё равно выполняется операционной системой через драйверы устройств, в то время как EFI обеспечивает поддержку драйверов, независимых от ОС, с помощью собственной модели драйверов.
Конечно, попытки изменить изначальный принцип BIOS уже предпринимались. IBM представила модифицированный дизайн системы PS/2 ещё в 1988 году, частично чтобы сбросить с рынка компьютеры с клонированным BIOS. 32-битную архитектуру Multi Channel Architecture (MCA) с ABIOS можно рассматривать как способ обхода реализаций клонированных BIOS. Следующая технология Advanced RISC Computing (ARC) нацелилась на объединение загрузочных окружений платформ MIPS и Alpha в 1990-х годах, но ей не хватило эволюционного развития, расширяемости и возможности увеличения числа платформ. PowerPC и SPARC представили собственные решения Open Firmware (OF) и Common Hardware Reference Platform (CHRP), своего рода ответ на ACPI.
Но в конечном итоге BIOS по-прежнему с нами, и эта технология делает то же самое, что и последние 25 лет: гарантирует, что ваша операционная система сможет загрузиться. Технология BIOS никогда не предусматривала современного разнообразия "железа". BIOS по-прежнему ограничена 16-битным интерфейсом и программными прерываниями, маршрутизацией прерываний и таймерами максимальной точности, ограниченным исполняемым пространством ROM (1 Мбайт) и размером образа, ограниченным числом инициализируемых устройств (что критично для серверной сферы), собственным расширениями и отсутствующей модульностью - и это только часть проблем.
Поддержка UEFI
Операционные системы начали поддерживать новый дизайн интерфейса платформ в 2007 году, но большинство версий Windows, таких как Vista with SP1 и Server 2008, предлагают поддержку только в 64-битных версиях. К сожалению, как мы обнаружили, поддержка UEFI в индустрии всё ещё слабая, и в сфере накопителей по-прежнему есть свои недостатки.
Чем может быть полезна UEFI?
EFI - это программный интерфейс, который работает между операционной системой и прошивкой платформы, что позволяет заменить BIOS. На самом деле, EFI достаточно сложный, чтобы можно было называть его похожим на собственную ОС. Он не только предлагает поддержку драйверов, интерфейсов и служб, но также имеет оболочку, в которой пользователи могут выполнять приложения посредством интерфейса командной строки.
EFI содержит системную информацию, организованную в виде таблиц, здесь есть загрузочные и runtime-службы внутренней операционной системы. Загрузочные службы включают инициализацию, файловые службы и другие подобные, а также текстовые и графические консоли пользователя. Runtime-службы включают сервисы даты, времени и NVRAM. Для поддержки связи между устройствами все драйверы и компоненты EFI поддерживают связь через специальные протоколы. Драйверы тоже очень важны, поскольку окружение устройств EFI (EFI Byte Code, EBC), является независимым от процессора, обеспечивающим как инициализацию, так и работу устройств (за исключением специфического для ОС "железа" с особыми функциями и требованиями поддержки, например, high-end видеокарт).
Ушли времена, когда для старта разных операционных систем требовался определённый загрузчик. EFI реализует собственный загрузчик, отвечающий за эту задачу. У сборщиков систем появляются новые возможности, поскольку можно добавлять расширения EFI из разной энергонезависимой памяти. Это означает, что производитель ПК может использовать материнскую плату и платформу по желанию потребителя, добавляя при этом дополнительные системные функции через EFI, например, через раздел на системном жёстком диске или через закачку в Интернете.
Apple Boot Camp, позволяющий пользователям устанавливать версию Windows рядом с существующей установкой Mac OS без какого-либо вреда последней, на самом деле использует реализацию Intel EFI на компьютерах Mac с процессорами Intel, а не Open Firmware. Функция стала доступной ещё с апреля 2005 года, но на платформах ПК x86 она распространяется нелегко.
Поскольку функция инициализации платформы EFI (Platform Initialization, PI) предлагает режим совместимости Compatibility Support Mode (CSM), через который можно публиковать дополнительные интерфейсы, можно предоставить и наследственный BIOS. Учитывая преимущества, скорая поддержка UEFI оказывается весьма привлекательной для производителей. Но сегодня широкая поддержка существует больше на бумаге.
Еще более усиливая сходство с ОС, спецификации UEFI включают в себя не только загрузочные, тестовые и рабочие сервисы, но также протоколы коммуникаций, драйверы устройств (UEFI изначально разрабатывалась для работы вне зависимости от операционных систем), функциональные расширения и даже собственную EFI-оболочку, из-под которой можно запускать собственные EFI-приложения. А уже поверх всего этого хозяйства расположен собственно загрузчик, отвечающий за запуск на компьютере основной операционной системы (или нескольких систем).
Хотя UEFI иногда называют псевдо-ОС, она, тем не менее, способна сама получать доступ ко всему аппаратному обеспечению компьютера. То есть уже на уровне UEFI вполне возможно, к примеру, выходить в Интернет или организовывать резервное копирование жестких дисков, причем делать это все в условиях полноценного графического интерфейса под привычным мышиным управлением.
Тот факт, что все эти расширенные загрузочные данные хранятся во вместительной флеш-памяти или на жестком диске, попутно означает, что там же имеется намного больше пространства для таких вещей, как языковая локализация системы, развитая система диагностики на этапе загрузки, полезные утилиты (типа архивации, восстановления после сбоя, сканирования на вирусное заражение) и так далее.
Полностью построенная на основе программного кода, UEFI действительно стала объединенной кросс-платформенной системой. Уже сегодня спецификации UEFI предусмотрены в работе почти любой комбинации чипов с 32- и 64-битной архитектурой, выпускаемых AMD, Intel и многочисленными лицензиатами ARM. Единственное, что требуется для обеспечения этой универсальности, это скомпилировать исходный код под требования каждой конкретной платформы.
Помимо внушительного множества расширяемых возможностей, реализуемых благодаря гибкому и продвинутому интерфейсу, система UEFI также определяет несколько стандартных особенностей, которые должны быть реализованы в работающем под ней компьютере. В частности, среди таких стандартно обеспечиваемых возможностей упоминаются «безопасная загрузка» (secure boot, о чем в подробностях далее), низкоуровневая криптография, сетевая аутентификация, универсальные графические драйверы и еще немало чего другого...
В принципе, в каждой из основных на сегодня операционных систем (Windows, OS X, Linux) уже имеется поддержка загрузки через UEFI. Но следует также отметить, что пока UEFI все еще является очень молодой системой и реально очень немногие ОС пользуются всеми ее преимуществами, перечисленными выше.
Linux определенно поддерживает UEFI, однако это скорее поверхностное знакомство, чем эффективное партнерство. Система Mac OS X продвинулась несколько дальше и отчасти использует UEFI со своим загрузочным менеджером Bootcamp. В линейке Microsoft реальная поддержка UEFI появится в Windows 8, и когда она будет запущена в 2012 году, эта операционная система, вероятно, станет первой из «главных» ОС, где будут весьма интенсивно задействованы преимущества UEFI, включая функции восстановления, обновления, безопасной загрузки и, вполне возможно, что-то еще.
Случилось так, что именно этот первый, действительно крупномасштабный проект Microsoft на основе UEFI породил и первую заметную проблему вокруг новой системы. Выдавливание конкурентов
В сентябре компьютерное сообщество взбудоражила новость о том, что корпорация Microsoft станет требовать поддержки безопасной загрузки UEFI от систем, официально сертифицированных под Windows 8. Вроде бы ничего страшного, но такой подход может с очень большой вероятностью привести к полному блокированию загрузки ОС Linux на Windows-сертифицированных системах.
Кое-где угроза была воспринята настолько серьезно, что, например, в Австралии Linux-сообщество тут же запустило процедуру подачи официальной жалобы в ACCC, Австралийскую комиссию по честной конкуренции и правам потребителей.
Однако, как говорят сведущие в технических и юридических тонкостях специалисты, именно из этого разбирательства Microsoft практически наверняка сумеет выбраться без всяких проблем. Просто потому, что в описании процесса безопасной загрузки UEFI или, точнее, в словах о необходимости такого процесса корпорацией не упоминаются иные операционные системы. Суть проблемы, с которой сражается Microsoft (очень тщательно и аккуратно подбирая выражения), — это борьба с вредоносными кодами, а безопасная загрузка тем и хороша для работы Windows, что такой процесс перекрывает еще один опасный канал для проникновения вредоносных программ.
Иначе говоря, в процессе обсуждения столь сложной и разветвленной системы, как UEFI, среди спорящих неизбежно возникает путаница относительно того, почему переход на более современную и, кажется, полезную технологию вызывает столь неоднозначную реакцию. Что же, давайте разберемся.
Начиналось все так. В конце сентября один из ведущих разработчиков дистрибутива Red Hat Мэтью Гаррет (Matthew Garrett) в своем блоге отметил, что, согласно новым правилам относительно присвоения машинам логотипа «Windows 8», все компьютеры, совместимые с этой ОС, должны будут иметь для загрузки уровень UEFI вместо устаревшего уровня BIOS.
Причем речь шла не просто о любом уровне спецификаций UEFI (реализованных в разных версиях достаточно давно), а конкретно о безопасном UEFI. Что означает более жесткий контроль за процессом загрузки системы. Конкретнее, это ужесточение означает то, что «все микрокоды прошивки и программное обеспечение, участвующее в процессе загрузки, должны быть криптографически подписаны доверяемым органом сертификации (CA)» — согласно слайдам презентации о загрузочном процессе UEFI в одном из официальных докладов Ари ван дер Ховена (Arie van der Hoeven), главного менеджера программ Microsoft (здесь, наверное, стоит привести и английскую версию названия этой почти непереводимой должности, Principal Program Manager Lead. — прим. редакции).
Именно этот момент — безопасная загрузка — ставит Linux в довольно непростую ситуацию. Потому что он означает, что теперь для «загружаемости» на одной из всех таких «Windows 8»-одобренных машин соответствующий дистрибутив Linux должен иметь сертифицированные криптоключи от конкретного изготовителя компьютера. С чисто технической точки зрения, как пояснил Гаррет в одном из следующих блог-постов, это означает, что на получение такого рода ключей разработчикам любого Linux-дистрибутива потребуется убить порядка недели на переговоры-соглашения с каждым из производителей железа индивидуально.
Другая сторона медали
Среди проблем, уже обозначившихся вокруг UEFI, есть одна особенная, очень важная для всех операционных платформ без исключения. Касается она защиты информации, а потому речь об этом удобно начать с мнения спецслужб и работающих на них специалистов.
В конце сентября в американском городе Орландо, штат Флорида, проходила специализированная выставка-конференция под названием NSA Trusted Computing, организованная Агентством национальной безопасности США. На этом мероприятии доклад об угрозах компьютерам со стороны BIOS и о путях укрепления защиты на этом направлении сделал Эндрю Регеншайд (Andrew Regenscheid), сотрудник подразделения компьютерной безопасности в составе NIST, американского Национального института стандартов и технологий. Именно это ведомство в тесном сотрудничестве с АНБ занимается подготовкой и изданием технических федеральных стандартов на защиту информации.
В апреле текущего года НИСТ выпустил специальный документ SP 800-47 с рекомендациями о том, каким образом производители компьютеров и использующие их структуры должны работать с BIOS для максимального предотвращения заражений и атак. Одним из главных соавторов данного документа и был Эндрю Регеншайд.
По свидетельству этого эксперта, несмотря на весьма ограниченную роль BIOS в современных компьютерах (где, как принято полагать, функции устаревшей системы сводятся лишь к загрузке ОС), реально BIOS на сегодняшний день представляет собой «нарастающий вектор угроз» для компьютеров и их пользователей. Ощутимый прогресс в защите операционных систем заставил злоумышленников изобретательно искать в компьютерах новые уязвимости. При этом специалисты, занимающиеся безопасностью, о BIOS долгое время забывали. А в совокупности все это стало означать, что креативные злодеи с заметным успехом ныне могут эксплуатировать уязвимости и в кодах прошивки микросхем.
Случаи атак через BIOS уже есть. Так, в начале сентября китайская антивирусная фирма обнаружила в компьютерах весьма опасный руткит, получивший название Mebromi, который успешно заражает своим шпионским компонентом память BIOS-чипов AWARD. Проникнув в BIOS и попутно подменяя MBR, главную загрузочную запись жесткого диска, эта вредоносная программа прописывается в машине так основательно, что удалить ее стандартными средствами не представляется возможным. Просто потому что антивирусные программы не занимаются лечением BIOS. Как сказал об этом Регеншайд, «если злоумышленник способен проникать в BIOS и модифицировать его код, он получает возможности не только «убить» систему, не допуская ее загрузки, но и внедрить свое шпионское ПО на чрезвычайно высоких по привилегиям уровнях работы системы».
И вот теперь, существенно усложняя общий «ландшафт угроз» для компьютерной безопасности в аспектах BIOS, на сцене появляется UEFI BIOS. То есть следующее поколение системы, в своих спецификациях добавляющее множество новых возможностей как для администраторов и конечных пользователей, так и для злоумышленников.
Совершенно очевидно, что, в отличие от традиционных BIOS, система UEFI способна на много, много большее, чем просто процесс загрузки. Эндрю Регеншайд, в частности, в своем докладе особо подчеркнул набор рабочих сервисов, которые можно вызывать даже в таких условиях, когда основная ОС уже давно загружена и, как принято обычно считать, полностью управляет компьютером. Эта специфическая особенность, а также другие свойства UEFI BIOS, по свидетельству Регеншайда, очень ощутимо расширяют пространство возможных атак на систему.
В дополнение к этому, сказал докладчик, стандарт UEFI BIOS намного более подробно документирован, нежели предыдущие спецификации BIOS. Это, да в сочетании с тем, что систему UEFI понадобится обновлять через сеть куда более часто, чем BIOS, открывает широкий простор для создания и внедрения самых разнообразных вредительских и шпионских закладок.
|