
Обзоры shim
Этот репозиторий предназначен для рассмотрения запросов на подписание shim. Чтобы создать запрос на рассмотрение:
Обратите внимание, что у нас есть опыт работы только с GRUB2 или systemd-boot в Linux, так что убедить нас одобрить что-либо ещё для подписания потребует от вас убедительных аргументов.
С 20 октября 2025 года shim-файлы, отправляемые в Microsoft, будут подписываться ключами 2011 и 2023 годов. За каждый отправленный shim вы получите обратно две копии, каждая подписанная разным ключом. Вот последняя информация от Microsoft: https://techcommunity.microsoft.com/blog/hardware-dev-center/signing-with-the-new-2023-microsoft-uefi-certificates-what-submitters-need-to-kn/4455787
Новые требования к подписанию также вступили в силу и доступны здесь: https://techcommunity.microsoft.com/blog/hardware-dev-center/updated-microsoft-uefi-signing-requirements/1062916 Обратите внимание, что прохождение этого рассмотрения shim освобождает вас от ежегодных аудитов безопасности, если ваш shim передаёт управление только загрузчикам с открытым исходным кодом.
Подсказка: загляните в каталог docs в этом репозитории, чтобы узнать, как подать заявку и подписать ваш shim.
Вот шаблон:
Название организации и веб-сайт:
[ваш текст здесь]
Рецензенты должны иметь возможность легко проверить, что ваша организация является юридическим лицом, чтобы предотвратить злоупотребления. Предоставьте информацию, которая может с уверенностью подтвердить подлинность.
Записи в реестре компаний/налоговом реестре или эквивалент:
(подойдёт ссылка на запись об организации в реестре вашей юрисдикции)
[ваш текст здесь]
Публичные данные как вашей организации, так и эмитента в EV-сертификате, используемом для подписания .cab-файлов в службах подписания файлов Microsoft Hardware Dev Center.
(не сертификат CA, встроенный в ваш бинарный файл shim)
Пример:``` Issuer: O=MyIssuer, Ltd., CN=MyIssuer EV Code Signing CA Subject: C=XX, O=MyCompany, Inc., CN=MyCompany, Inc.
*******************************************************************************
### Для какого продукта или услуги это предназначено?
*******************************************************************************
[ваш текст здесь]
*******************************************************************************
### Каково обоснование того, что это действительно должно быть подписано, чтобы весь мир мог загрузить его?
*******************************************************************************
[ваш текст здесь]
*******************************************************************************
### Почему вы не можете использовать shim из другого дистрибутива, который уже подписан?
*******************************************************************************
[ваш текст здесь]
*******************************************************************************
### Кто является основным контактным лицом для обновлений безопасности и т. д.?
Контакты службы безопасности должны быть проверены до того, как shim будет принят. При последующих запросах проверка контактов необходима только в том случае, если контакты службы безопасности или их PGP-ключи изменились с момента последней успешной проверки.
Уполномоченный рецензент начнёт проверку контактов, отправив каждому контакту службы безопасности PGP-зашифрованное письмо, содержащее случайные слова.
Вас попросят опубликовать содержимое этих писем в вашем issue `shim-review`, чтобы подтвердить владение адресами электронной почты и PGP-ключами.
Загрузите PGP-ключи на известный сервер ключей, например keyserver.ubuntu.com, и/или включите их в рецензию в виде .asc-файла, и укажите на них здесь.
*******************************************************************************
- Имя:
- Должность:
- Адрес электронной почты:
- Отпечаток PGP-ключа:
- Расположение файла/сервера ключей:
*******************************************************************************
### Кто является дополнительным контактным лицом для обновлений безопасности и т. д.?
*******************************************************************************
- Имя:
- Должность:
- Адрес электронной почты:
- Отпечаток PGP-ключа:
- Расположение файла/сервера ключей:
*******************************************************************************
### Были ли эти двоичные файлы созданы из tar-архива релиза shim 16.1?
Пожалуйста, создавайте свои двоичные файлы shim, начиная с tar-файла релиза shim 16.1: https://github.com/rhboot/shim/releases/download/16.1/shim-16.1.tar.bz2
Это соответствует https://github.com/rhboot/shim/releases/tag/16.1 и содержит соответствующий исходный код gnu-efi.
Убедитесь, что tar-архив корректен, проверив контрольную сумму вашей загрузки
(SHA256, SHA512) со следующими:```
46319cd228d8f2c06c744241c0f342412329a7c630436fce7f82cf6936b1d603 shim-16.1.tar.bz2
ca5f80e82f3b80b622028f03ef23105c98ee1b6a25f52a59c823080a3202dd4b9962266489296e99f955eb92e36ce13e0b1d57f688350006bba45f2718f159fb shim-16.1.tar.bz2
Убедитесь, что ваш процесс сборки использует этот файл как источник истины (за исключением внешних патчей) и что его контрольная сумма совпадает. Вы также можете дополнительно проверить релиз, проверив PGP-подпись: есть откреплённая подпись
Релиз подписан мейнтейнером Питером Джонсом (Peter Jones) — его мастер-ключ имеет отпечаток B00B48BC731AA8840FED9FB0EED266B70F4FEF10, а подписывающий суб-ключ в данной подписи имеет отпечаток 02093E0D19DDE0F7DFFBB53C1FD3F540256A1372. Копия его открытого ключа включена сюда для справки: pjones.asc
Как только вы убедитесь, что используемый вами tar-архив корректен и подлинен, подтвердите это здесь простым да.
Краткое руководство по проверке открытых ключей и подписей должно быть доступно в каталоге docs.
[ваш текст здесь]
Подсказка: если вы прикрепите все патчи и модификации, используемые в вашем приложении, вы можете указать здесь URL вашего приложения (https://github.com/YOUR_ORGANIZATION/shim-review).
Вы также можете указать свои собственные git-серверы, где размещён код.
[ваш URL здесь]
Укажите все внешние патчи и модификации процесса сборки, которые используются при вашей сборке и делают ваш shim-бинарный файл именно тем, который вы приложили к данной заявке.
[ваш текст здесь]
См. https://techcommunity.microsoft.com/t5/hardware-dev-center/nx-exception-for-shim-community/ba-p/3976522 для получения дополнительных сведений о подписании shim без бита NX.
[ваш текст здесь]
Пропустите этот пункт, если вы не используете GRUB2.
[ваш текст здесь]
Пропустите этот пункт, если вы не используете GRUB2; в противном случае убедитесь, что они присутствуют, и подтвердите ответом да.
[ваш текст здесь]
Пропустите этот пункт, если вы не используете GRUB2; в противном случае есть ли в вашем бинарном файле GRUB2 запись, аналогичная:
grub,5,Free Software Foundation,grub,GRUB_UPSTREAM_VERSION,https://www.gnu.org/software/grub/?
[ваш текст здесь]
Если у вас не было ранее подписанного shim, укажите это здесь. В противном случае достаточно простого да.
[ваш текст здесь]
Подсказка: в вышестоящих ядрах все эти коммиты должны быть применены, но если вы поставляете собственную сильно модифицированную старую версию ядра, поддерживаемую отдельно от upstream, это может быть не так.
Если вы поставляете старое ядро, перепроверьте свои источники; возможно, у вас есть не все патчи, но вы поставляете конфигурацию, которая не раскрывает указанные проблемы.
[ваш текст здесь]
Подсказка: если это не так, мы вряд ли подпишем ваш shim.
[ваш текст здесь]
[ваш текст здесь]
[ваш текст здесь]
[ваш текст здесь]
Это гарантирует, что ваши новые shim+GRUB2 больше не смогут выполнять цепочную загрузку (chainload) тех старых бинарных файлов GRUB2 с проблемами.
Если это ваша первая заявка или вы используете новый сертификат CA, сообщите об этом здесь.
[ваш текст здесь]
Рецензент всегда должен иметь возможность запустить docker build ., чтобы получить точный бинарный файл, который вы приложили к своей заявке.
Подсказка: предпочтительно использовать замороженные пакеты для вашего тулчейна, поскольку обновление GCC, binutils, gnu-efi может привести к сборке shim-бинарного файла с другой контрольной суммой.
Если ваши shim-бинарные файлы не могут быть воспроизведены с помощью предоставленного Dockerfile, объясните, почему это так, какими будут различия и какое окружение сборки (ОС и тулчейн) используется для воспроизведения этой сборки? В этом случае напишите подробное руководство, как настроить это окружение сборки с нуля.
[ваш текст здесь]
Это должно включать журналы создания корневых каталогов сборки (buildroots), применения патчей, выполнения сборки, создания архивов и т.д.
[ваш текст здесь]
Например, подписание новых вариантов ядра, UKI, systemd-boot, новых сертификатов, нового CA и т.д.
Пропустите этот пункт, если это ваша первая заявка на подписание shim.
[ваш текст здесь]
[ваш текст здесь]
Опишите стратегию безопасности, используемую для защиты ключей. Это может варьироваться от использования аппаратных токенов, таких как HSM или смарт-карты, изолированных от сети хранилищ (air-gapped), физических сейфов, до других хороших практик.
[ваш текст здесь]
Достаточно ответа да или нет. За последний вариант никаких штрафов нет.
[ваш текст здесь]
Достаточно ответа да или нет. За последний вариант никаких штрафов нет. Однако если да: включает ли этот сертификат X509v3 Basic Constraints, указывающие, что это CA? См. docs для получения дополнительных рекомендаций по этому вопросу.
[ваш текст здесь]
Подсказка: история SBAT и дополнительная информация о том, как это работает, доступны здесь. Этот документ объёмный, поэтому для некоторых примеров обратитесь к SBAT.example.md
Если вы используете нижестоящую (downstream) реализацию GRUB2 (например, из Fedora или Debian), убедитесь, что их записи SBAT сохранены, и что вы добавляете свои собственные (не заменяя их), чтобы упростить отзыв.
Не забудьте опубликовать записи всех бинарных файлов. Помимо вашего загрузчика, вы также можете поставлять, например, обновлятель прошивки, у которого они тоже будут.
Подсказка: выполните objcopy --dump-section .sbat=/dev/stdout YOUR_EFI_BINARY, чтобы получить эти записи. Вставьте их сюда. Желательно обрамлять каждый список тремя обратными кавычками (```), чтобы они корректно отображались.
[ваш текст здесь]
Пропустите этот пункт, если вы не используете GRUB2.
Подсказка: речь идёт о тех модулях, которые находятся в самом бинарном файле, а не о файлах .mod в вашей файловой системе.
[ваш текст здесь]
[ваш текст здесь]
[ваш текст здесь]
Подсказка: наиболее распространённым случаем здесь будет обновлятель прошивки, например fwupd.
[ваш текст здесь]
Пропустите этот пункт, если вы не используете GRUB2 или systemd-boot.
[ваш текст здесь]
Обобщите в одном-двух предложениях, как работает ваша безопасная цепочка загрузки на высоком уровне.
[ваш текст здесь]
[ваш текст здесь]
[ваш текст здесь]
Процесс проверки задуман как коллегиальная (peer-review) работа, и лучший способ ускорить рассмотрение вашей заявки — помочь с проверкой заявок других. В большинстве случаев мы — волонтёры, работающие на этой площадке в свободное время, а не наёмные сотрудники, которым платят за проверку заявок в рабочее время.
Разумный срок ожидания проверки может достигать 2–3 месяцев. Помощь нам — лучший способ сократить этот период. Чем больше помощи мы получим, тем быстрее и глаже пойдут дела.
Новичкам для начала процесса участия рекомендуются заявки, помеченные как easy to review.
[ваш текст здесь]
[ваш текст здесь]