Как проверить подписанные двоичные файлы UEFI?

В CentOS 7 ядро ​​по умолчанию находится в каталоге /boot. Это место будет указано в файле конфигурации загрузчика GRUB2. Расположение файла конфигурации GRUB2 — /etc/grub2.cfg. Это символическая ссылка на фактический файл конфигурации, расположение которого зависит от используемой прошивки (BIOS/UEFI ).

В конфигурационном файле GRUB2 вы найдете раздел «меню» для каждого ядра, на загрузку которого настроена ваша система. Внутри каждой строфы найдите переменную root. Пример из моей системы следующий:

set root='hd0,msdos1'

Приведенная выше переменная указывает первый раздел на первом диске с разделами MBR -. В моей системе это соответствует /dev/sda1, который монтируется как раздел /boot.

Продолжая работу в том же разделе меню, вы должны увидеть строку, начинающуюся с «linux16» или «linuxefi». Сразу за этим ключевым словом следует путь к ядру (относительно корневого каталога, указанного ранее ). Например:

linux16 /vmlinuz-3.10.0-693.el7.x86_64...

В вашей системе это будет один из файлов 'vmlinuz -*', которые вы видели в выводе ls /boot. Это ядра, установленные в настоящее время в вашей системе.

2
26.02.2021, 18:15
1 ответ

Это не ответ, а комментарий, который я все равно хотел бы добавить, потому что считаю его уместным.

Механизм безопасной загрузки EFI только проверяет двоичные файлы и библиотеки (, например. исполняемый код )сигнатуры, которые выполняются, он не проверяет и не может проверять ничего, кроме этого, потому что это сделало бы загрузку невозможной. Любая ОС должна знать, откуда загружаться, и эта информация поступает из изменяемых пользователем неподписанных файлов конфигурации , например. /boot/efi/EFI/Microsoft/Boot/BCDдля Windows и /boot/efi/EFI/$distro/grub.cfgдля дистрибутивов Linux.

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

Наконец, еще раз извините, что не ответил на ваш вопрос, эта команда сообщит вам, работает ли ваша система в режиме безопасной загрузки:

dmesg | grep -i secure\ boot\ enabled

Наконец, modinfoне не проверяет подписи, а только показывает их. Ядро абсолютно точно делает это -вот результат после того, как я изменил несколько случайных байтов, используяhexedit:

# modprobe orangefs 
modprobe: ERROR: could not insert 'orangefs': Key was rejected by service
1
18.03.2021, 22:28

Теги

Похожие вопросы