int13h
Мэтью Гаррет (Matthew Garrett), один из разработчиков ядра Linux, последнее время занимающийся обеспечением загрузки Linux на системах с UEFI, опубликовал в списке рассылки ядра Linux серию патчей, отключающих поддержку спящего режима (Hibernate) и функцию загрузки нового ядра из уже запущенного ядра Linux (kexec), в случае сборки ядра в режиме верификации для UEFI Secure Boot.
Необходимость отключения данных функций при использовании UEFI Secure Boot объясняется невозможностью гарантировать сохранение цепочки доверия при загрузке ядра в процессе возврата из спящего режима или при использовании kexec, чем может воспользоваться атакующий и организовать выполнение варианта ядра в режиме без проверки цифровых подписей. В случае с kexec атакующий может просто запустить произвольный образ ядра, а при активности спящего режима, отключить раздел подкачки и подменить образ восстановления.
В настоящее время полный процесс верификации ядра при загрузке в режиме UEFI Secure Boot используется только в дистрибутиве Fedora Linux, остальные дистрибутивы ограничиваются поддержкой проверки загрузчика, после чего запускают ядро Linux в обычном режиме. Если патчи будут приняты в состав ядра, то пользователи Fedora Linux будут лишены возможности перевода их систем в спящий режим при загрузке системы в режиме UEFI Secure Boot. Без данных патчей и без создания полноценных механизмов проверки для kexec и hibernation, процесс верификации ядра становится бессмысленным, так как его можно обойти. В качестве одного из путей решения проблемы, в случае с kexec, ранее для ядра Linux был предложен прототип системы верификации исполняемых файлов по цифровым подписям. Для hibernation решение пока не предложено.
Кроме патчей для запрета kexec и hibernation при загрузке в режиме UEFI Secure Boot, Мэтью Гаррет опубликовал набор патчей для определения политики доступа в процессе безопасной загрузки (Secure boot policy). Если неизменность хранимого на диске образа ядра гарантируется цифровой подписью, то уже загруженное в память ядро может быть изменено в процессе его работы. В настоящее время существует большое число интерфейсов, позволяющих пользователю с правами root внести модификации в код уже загруженного в память ядра. Представленные патчи реализуют новый тип capabilities - "CAP_COMPROMISE_KERNEL", предназначенный для выборочного предоставления привилегированных действий по модификации ядра только для приложений, которым предоставлены соответствующие полномочия. Новая возможность полезна не только при загрузке в режиме UEFI Secure Boot, но и в других ситуациях, требующих ограничения доступа к ядру.
Ссылки по теме