
Демонстрирует CVE-2022-34302 — обход Secure Boot через подписанный загрузчик New Horizon Datasys, встроенный пользовательский загрузчик PE/COFF которого выполняет неподписанные UEFI-приложения.
New Horizon Datasys Reboot Restore Boot Loader - Bring Your Own Vulnerable UEFI Application (BYOVUA) - обход Secure Boot через подписанный загрузчик со встроенным пользовательским загрузчиком PE/COFF, который загружает неподписанные UEFI-приложения.
Этот репозиторий демонстрирует технику BYOVUA (Bring Your Own Vulnerable UEFI Application) путём эксплуатации CVE-2022-34302 - уязвимости обхода Secure Boot в загрузчике New Horizon Datasys.
В отличие от уязвимостей на основе UEFI Shell (CVE-2022-34301 и CVE-2022-34303), этот загрузчик не предоставляет UEFI Shell. Вместо этого shdloader.efi реализует собственный пользовательский загрузчик PE/COFF, который загружает бинарный файл второй стадии (shdmgr.ef_) без использования функции LoadImage() прошивки и без выполнения какой-либо проверки подписи. Злоумышленнику достаточно заменить shdmgr.ef_ на любое совместимое UEFI-приложение, чтобы добиться выполнения произвольного кода при включённом Secure Boot.
Это наиболее опасная из трёх уязвимостей, раскрытых в исследовании "One Bootloader to Load Them All". Как отметили в Eclypsium: обход встроен, полностью незаметен и не оставляет визуальных признаков на экране - что делает его невидимым даже на системах с монитором и необнаружимым на безголовых системах, таких как серверы или промышленное оборудование.
BYOVUA - это UEFI-эквивалент техники BYOVD (Bring Your Own Vulnerable Driver), используемой на уровне ядра. Вместо того чтобы принести подписанный драйвер ядра с уязвимостью, злоумышленник приносит подписанное UEFI-приложение, содержащее функциональность, способную подорвать Secure Boot.
Поскольку shdloader.efi подписан сертификатом, которому доверяет Microsoft, он принимается Secure Boot без вопросов, что делает его доверенным на любой системе, включающей этот сертификат в свою базу данных Secure Boot (db) - а это практически каждый ПК с поддержкой UEFI, выпущенный за последнее десятилетие. После запуска его встроенный пользовательский загрузчик PE даёт злоумышленнику возможность загружать и выполнять произвольный неподписанный код до загрузки операционной системы, в среде, где современные средства защиты (ASLR, DEP, защиты ядра) попросту отсутствуют.
shdloader.efi - это UEFI-загрузчик, распространяемый в составе продуктов восстановления и отката системы New Horizon Datasys (Reboot Restore Rx, RollBack Rx). Его роль в легитимной цепочке загрузки заключается в загрузке компонента управления до запуска ОС (shdmgr.ef_), который обрабатывает операции создания снимков и восстановления до запуска операционной системы.
| Свойство | Значение |
|---|---|
| Файл | shdloader.efi = EFI/Boot/bootx64.efi |
| Производитель | New Horizon Datasys Inc |
| Продукт | Reboot Restore Rx / RollBack Rx |
| CVE | CVE-2022-34302 |
| Подпись | Microsoft Windows UEFI Driver Publisher → Microsoft Corporation UEFI CA 2011 |
| Обнаружение | Eclypsium (Mickey Shkatov, Jesse Michael) - август 2022 |
| Презентация | DEF CON 30 - "One Bootloader to Load Them All" |
| Отзыв | Добавлен в DBX через Microsoft KB5012170 (август 2022) |
Уязвимость представляет собой дефект проектирования в архитектуре загрузчика. Вместо использования загрузочных сервисов прошивки LoadImage() и StartImage(), которые обеспечивают проверку подписи Secure Boot, shdloader.efi реализует собственный пользовательский загрузчик PE/COFF, который читает, перемещает и выполняет shdmgr.ef_ напрямую из необработанных байтов диска, полностью обходя проверки безопасности прошивки.
Основная проблема: подписанный бинарный файл, которому доверяет Secure Boot, содержит собственный загрузчик образов, который не проверяет подписи. Прошивка проверяет shdloader.efi как подписанный, но как только он запущен, он загружает shdmgr.ef_ без какой-либо проверки. Замена shdmgr.ef_ на произвольное UEFI-приложение приводит к тому, что это приложение выполняется с полным доступом к оборудованию, в то время как Secure Boot отображается как включённый.
Это принципиально отличается от CVE-2022-34301 и CVE-2022-34303, где злоумышленнику необходимо взаимодействовать с UEFI Shell и вручную повредить gSecurity2, чтобы отключить проверку. Здесь обход автоматический и незаметный - без взаимодействия с пользователем, без видимого вывода, без приглашения оболочки.
Подписанный shdloader.efi содержит собственную реализацию загрузчика образов PE/COFF. Вместо вызова загрузочного сервиса прошивки LoadImage(), который задействовал бы архитектурные протоколы безопасности и проверил подпись образа по базе данных Secure Boot, загрузчик:
\EFI\Boot\shdmgr.ef_ с помощью EFI_SIMPLE_FILE_SYSTEM_PROTOCOL.reloc и применяет базовые перемещенияНи на одном из этих этапов загрузчик не проверяет подпись Authenticode образа, не обращается к базе данных Secure Boot (db/dbx) и не вызывает EFI_SECURITY2_ARCH_PROTOCOL. Образ загружается исключительно на основе структурной корректности его PE/COFF.```c
// Pseudocode of what shdloader.efi does internally
//
// NOTE: This is a simplified representation. The actual
// implementation was derived from reverse engineering.
EFI_STATUS LoadShdmgr(VOID) { // Step 1: Open the file File = OpenFile(L"\EFI\Boot\shdmgr.ef_");
// Step 2: Read raw bytes (no signature check)
ReadFile(File, &Buffer, &Size);
// Step 3: Parse PE/COFF headers
DosHeader = (EFI_IMAGE_DOS_HEADER *)Buffer;
PeHeader = (EFI_IMAGE_NT_HEADERS *)(Buffer + DosHeader->e_lfanew);