Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
shim — UEFI shim loader | Kitploit
Инструменты/GitHubGitHub/rhboot/shim
Оборонительные ИнструментыБезопасность встроенных системКриптографияАппаратная БезопасностьБезопасность Цепочки ПоставокАутентификация
GitHubrhboot/shim

shim

UEFI shim loader

Репозиторий
1.1k35051 месяц назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

shim — загрузчик первой стадии UEFI

shim — это тривиальное EFI-приложение, которое при запуске пытается открыть и выполнить другое приложение. Изначально оно пытается сделать это через стандартные вызовы EFI LoadImage() и StartImage(). Если эти вызовы завершаются неудачей (например, из-за включённого Secure Boot, когда двоичный файл не подписан подходящим ключом), то shim проверяет двоичный файл с помощью встроенного сертификата. Если эта проверка проходит успешно и двоичный файл или подписывающий ключ не запрещены, shim перемещает и выполняет двоичный файл.

протоколы

протокол блокировки shim (shim lock protocol)

shim также устанавливает протокол, который позволяет загрузчику второй стадии выполнять аналогичную проверку двоичных файлов. Этот протокол имеет GUID, описанный в заголовочном файле shim.h, и предоставляет единственную точку входа. В 64-битных системах эта точка входа должна вызываться с SysV ABI, а не MSABI, поэтому вызовы к ней не должны быть обёрнуты.

протокол загрузчика shim (shim loader protocol)

Начиная с версии 16.1 shim переопределяет системную таблицу и устанавливает собственную версию функций LoadImage()/StartImage()/UnloadImage()/Exit(), так что вторые стадии могут просто вызывать их из системной таблицы, и это будет работать независимо от того, является ли shim первой стадией, без необходимости в shim-специфичном коде во вторых стадиях.

Когда этот протокол установлен, подписанные UKI Unified Kernel Images могут быть загружены, даже если вложенное ядро не подписано, поскольку после загрузки и проверки UKI shim создаёт внутренний список разрешённых (allowlist) всех секций, содержащихся в UKI. Когда образ загружается из такой секции, он проверяется по спискам запрещённых (denylists) (на момент написания — DBX/MOKX/SBAT), но не проверяется по спискам разрешённых (allowlists) (хэши/подписи DB/MOK), поскольку внешний образ уже был проверен, и внутренний образ, таким образом, покрыт этими подписями или хэшами. Кроме того, внутренний образ не измеряется в TPM, чтобы избежать двойных измерений.

TPM

В системах с включённым и поддерживаемым прошивкой системы чипом TPM shim расширяет различные PCR значениями хэшей (digests) загружаемых целей. Полный список приведён в файле README.tpm.

сборка и тестирование

Для использования shim просто поместите DER-кодированный открытый сертификат в файл, например pub.cer, и выполните сборку с make VENDOR_CERT_FILE=pub.cer.

Существует несколько параметров сборки и несколько способов её настройки, описанных в BUILDING.

См. test plan и создайте тикет, если что-то не работает!

контакты

В случае, если необходимо связаться с разработчиками по поводу инцидента безопасности или уязвимости, напишите на [email protected].

Скачать инструмент