Уязвимости GRUB2 UEFI SecureBoot — 2021
После анонса в июле 2020 г. о "BootHole", группе ошибок в GRUB2, исследователи безопасности и разработчики Debian, а также других дистрибутивов продолжили поиск других проблем, которые могли бы позволить обойти UEFI Secure Boot. Было обнаружено ещё несколько таких ошибок. Подробности см. в рекомендации по безопасности Debian 4867-1. Цель данного документа состоит в том, чтобы объяснить последствия этих уязвимостей, а также указать, что следует предпринять для того, чтобы исправить их.
- Общая информация: что такое UEFI Secure Boot?
- Обнаружение многочисленных ошибок GRUB2
- Необходимость отзыва ключей для исправления цепочки Secure Boot
- Каковы последствия отзыва ключей?
- Обновлённые пакеты и ключи
- Редакция Debian 10.10 (
buster
), обновлённые установочные носители иживые
образы - Дополнительная информация
Общая информация: что такое UEFI Secure Boot?
UEFI Secure Boot (SB) представляет собой механизм проверки, гарантирующий что запускаемый UEFI-микропрограммой компьютера код является доверенным. Он разработан для защиты системы от вредоносного кода, загружаемого и исполняемого достаточно рано в процессе старта и до загрузки операционной системы.
SB работает с использованием криптографических контрольных сумм и подписей. Каждая программа, загружаемая микропрограммой, содержит подпись и контрольную сумму. Перед тем, как разрешить исполнение, микропрограмма выполняет проверку того, что запускаемая программа является доверенной. Это осуществляется путём проверки контрольной суммы и подписи. Если SB включён в системе, то любая попытка выполнить недоверенную программу будет запрещена. Это позволяет предотвратить запуск непредусмотренного / неавторизованного кода в UEFI-окружении.
Большинство оборудования с архитектурой x86 поставляется с завода с предустановленными ключами Microsoft. Это означает, что микропрограмма в такой системе доверяет двоичным файлам, подписанным Microsoft. Большинство современных систем поставляются с включённым механизмом SB, по умолчанию они не запускают какой-либо неподписанный код. Однако можно изменить настройки микропрограммы и либо отключить SB, либо зарегистрировать дополнительные ключи.
Debian, как и многие другие операционные системы на основе Linux, использует программу, называемую shim, для расширения доверия от микропрограммы до других программ, которые нам требуется обезопасить в ходе ранней загрузки — это загрузчик GRUB2, ядро Linux и инструменты обновления микропрограмм (fwupd и fwupdate).
Обнаружение многочисленных ошибок GRUB2
В модуле acpi
для GRUB2 была обнаружена ошибка. Этот модуль
разработан для предоставления интерфейса драйверов для ACPI (улучшенного
интерфейса для конфигурации и управления электропитанием
), довольно распространённой
части современного оборудования. К сожалению, модуль ACPI в настоящее время
позволяет привилегированному пользователю загружать специально сформированные таблицы ACPI
при включённом Secure Boot и выполнять произвольные изменения состояния системы;
это позволяет людям легко ломать цепочку Secure Boot. В настоящее время эта
уязвимость исправлена.
Как и в случае с BootHole вместо исправления этой одной ошибки разработчики продолжили более глубокий аудит и анализ исходного кода GRUB2. Было бы безответственно исправить одну серьёзную уязвимость без поиска других уязвимостей! Мы обнаружили ещё несколько мест в коде, где выделение внутренней памяти может приводить к переполнению при получении неожиданных входных данных, а также несколько мест, где память может использоваться после её освобождения. Исправления для всех этих ошибок были распространены среди участников сообщества и протестированы.
Полный список обнаруженных ошибок можно найти в рекомендации по безопасности Debian 4867-1.
Необходимость отзыва ключей для исправления цепочки Secure Boot
Очевидно, Debian и другие поставщики операционных систем выпустят исправленные версии GRUB2 и Linux. Тем не менее на этом исправление проблем не завершается. Злоумышленники всё ещё могут быть способны использовать предыдущие уязвимые версии загрузчика и ядра, чтобы обойти Secure Boot.
Для предотвращения этого следующим шагом будет внесение сотрудниками Microsoft небезопасных двоичных файлов в список блокировки, чтобы они не могли быть запущены при включённом SB. Это достигается с помощью списка DBX, который является частью UEFI Secure Boot. Все дистрибутивы Linux, поставляющие подписанные Microsoft копии shim, должны предоставить подробную информацию о двоичных файлах или используемых ключах, чтобы указанные действия были выполнены. Будет обновлён UEFI-файл со списком отозванных ключей, обновление будет содержать предоставленную информацию. Позднее, некоторый момент времени, системы начнут использовать этот обновлённый список и перестанут запускать уязвимые двоичные файлы при использовании Secure Boot.
Точный срок развёртывания этого изменения пока не ясен. В какой-то момент поставщики BIOS/UEFI добавят новый список отозванных ключей в новые сборки микропрограмм для нового оборудования. Microsoft может выпустить обновления для существующих систем через Windows Update. Некоторые дистрибутивы Linux также могут выпустить обновления через свои собственные системы обновления безопасности. Debian пока этого не сделал, но мы собираемся сделать это в будущем.
Каковы последствия отзыва ключей?
Большинство поставщиков с недоверием относятся к автоматическому применению
обновлений, которые отзывают ключи, используемые для Secure Boot. Существующие
наборы ПО могут неожиданно перестать загружаться при включённом SB, если
пользователь также не установил требуемые обновления ПО. Двойная
загрузка систем Windows/Linux тоже может неожиданно прекратить загрузку
Linux. Конечно же, старые установочные образы и живые
тоже перестанут
загружаться, что потенциально усложнит восстановление систем.
Имеются два очевидных способа исправления незагружающейся системы:
- Перезагрузиться в режиме
восстановления
, используя более новые установочные носители, и применить необходимые обновления; или - Временно отключить Secure Boot для получения доступа к системе, применить обновления, а затем заново включить SB.
Оба пути могут вначале показаться простыми, однако каждый из них потребует некоторого количества времени, особенно от пользователей нескольких систем. Кроме того, помните, что для включения или отключения Secure Boot требуется непосредственный доступ к машине. Обычно нельзя изменить эту настройку извне системы настройки микропрограммы компьютера. Удалённые серверные машины могут потребовать специального обращения по этой самой причине.
По этим причинам настоятельно рекомендуется, чтобы все пользователи Debian установили все рекомендованные обновления для своих систем как можно скорее. Это позволит снизить вероятность возникновения проблем в будущем.
Обновлённые пакеты
ВНИМАНИЕ: системы, использующие Debian 9 (stretch
) и более ранние
выпуски необязательно получат соответствующие обновления, поскольку Debian 10
(buster
) является первым выпуском Debian, включающим поддержку UEFI
Secure Boot.
В Debian имеются пять пакетов с исходным кодом, которые будут обновлены из-за описанных здесь изменений UEFI Secure Boot:
1. GRUB2
Обновлённые версии Debian-пакетов GRUB2 доступны уже сейчас в архиве
debian-security для стабильного выпуска Debian 10
(buster
). Исправленные версии очень скоро появятся в обычном архиве Debian
для разрабатываемых версий Debian (нестабильного и тестируемого).
2. Linux
Обновлённые версии Debian-пакетов linux будут доступны в скором времени через
buster-proposed-updates для стабильного выпуска Debian 10 (buster
)
и будут включены в готовящуюся редакцию 10.10. Новые пакеты
также скоро появятся в архиве Debian для разрабатываемых версий
Debian (нестабильного и тестируемого). Мы надеемся, что исправленные пакеты
будут вскоре загружены в buster-backports.
3. Shim и SBAT
Обнаружение серии ошибок BootHole
было первым случаем, когда в
экосистеме UEFI Secure Boot потребовалось отозвать ключи. Это показало
досадную ошибку проектирования в механизме отзыва ключей SB: большое
количество разных дистрибутивов Linux и разных двоичных файлов UEFI приводят
к тому, что список отзыва ключей растёт очень быстро. Многие компьютерные системы
имеют лишь ограниченный объём места для хранения данных об отзыве ключей,
отзыв большого числа ключей может быстро заполнить этот объём и привести
к различным поломкам систем.
Для борьбы с этой проблемой разработчики shim разработали более эффективный в
плане места для хранения метод блокировки в будущем небезопасных двоичных файлов
UEFI. Он называется SBAT (Secure Boot Advanced Targeting
).
Он работает путём отслеживания номеров поколения подписанных программ.
Вместо отзыва отдельных подписей при обнаружении проблем используются
счётчики для определения старых версий программ, которые более не считаются
безопасными. Отзыв старых серий двоичных файлов GRUB2 (например)
теперь потребует обновления переменной UEFI, содержащей номер поколения
для GRUB2; любые версии GRUB2 с более старым номером более не будут считаться
безопасными. За дополнительной информацией о SBAT обращайтесь к
shim документации
по SBAT.
К сожалению, новая разработка shim SBAT ещё не совсем готова. Разработчики собирались сейчас выпустить новую версию shim, содержащую эту новую возможность, но они столкнулись с неожиданными проблемами. Разработка ещё продолжается. Мы ожидаем, что сообщество Linux очень скоро обновиться до этой новой версии shim. До того, как эта разработка будет готова, мы все продолжим использовать наши существующие подписанные двоичные файлы shim.
Обновлённые версии Debian-пакетов shim будут доступны сразу же, как только работа будет завершена. О них будет объявлено здесь и в других местах. Кроме того, мы опубликуем новую редакцию Debian, 10.10, а также выпустим новые пакеты shim для разрабатываемых версий Debian (нестабильного и тестируемого).
4. Fwupdate
Обновлённые версии Debian-пакетов fwupdate будут доступны в скором времени
через buster-proposed-updates для стабильного выпуска Debian 10 (buster
)
и будут включены в готовящуюся редакцию 10.10. Пакет fwupdate уже был
удалён из нестабильного и тестируемого выпусков в связи с его заменой
на пакет fwupd.
5. Fwupd
Обновлённые версии Debian-пакетов fwupd будут доступны в скором времени
через buster-proposed-updates для стабильного выпуска Debian 10 (buster
)
и будут включены в готовящуюся редакцию 10.10. Новые пакеты
также находятся в архиве Debian для разрабатываемых версий
Debian (нестабильного и тестируемого).
6. Ключи
Разработчики Debian создали новые ключи для подписывания и сертификаты для своих пакетов Secure Boot. Ранее мы использовали один сертификат для всех наших пакетов:
- Debian Secure Boot Signer 2020
- (fingerprint
3a91a54f9f46a720fe5bbd2390538ba557da0c2ed5286f5351fe04fff254ec31)
- (fingerprint
Теперь мы перешли на использование отдельных ключей и сертификатов для каждого из пяти разных пакетов с исходным кодом, что в будущем даст нам большую гибкость:
- Debian Secure Boot Signer 2021 - fwupd
- (fingerprint
309cf4b37d11af9dbf988b17dfa856443118a41395d094fa7acfe37bcd690e33
)
- (fingerprint
- Debian Secure Boot Signer 2021 - fwupdate
- (fingerprint
e3bd875aaac396020a1eb2a7e6e185dd4868fdf7e5d69b974215bd24cab04b5d
)
- (fingerprint
- Debian Secure Boot Signer 2021 - grub2
- (fingerprint
0ec31f19134e46a4ef928bd5f0c60ee52f6f817011b5880cb6c8ac953c23510c
)
- (fingerprint
- Debian Secure Boot Signer 2021 - linux
- (fingerprint
88ce3137175e3840b74356a8c3cae4bdd4af1b557a7367f6704ed8c2bd1fbf1d
)
- (fingerprint
- Debian Secure Boot Signer 2021 - shim
- (fingerprint
40eced276ab0a64fc369db1900bd15536a1fb7d6cc0969a0ea7c7594bb0b85e2
)
- (fingerprint
Редакция Debian 10.10 (buster
)
обновлённые установочные носители и живые
образы
Все описанные здесь обновления планируется включить в редакцию
Debian 10.10 (buster
), который будет выпущен в скором времени.
Таким образом, пользователям, которым нужны установочные и живые
образы Debian следует выбирать 10.10. В будущем более ранние образы могут
не работать с Secure Boot, так как будет выполнен отзыв ключей.
Дополнительная информация
Дополнительную информацию о настройке UEFI Secure Boot в Debian можно найти в вики Debian по адресу https://wiki.debian.org/SecureBoot.
Другие ресурсы по данной теме: