Устранение рисков памяти UEFI
Требования центра сертификации UEFI (ЦС) сторонних поставщиков Майкрософт обновляются, чтобы в образах UEFI включались средства устранения рисков памяти. Эти изменения будут отражены в требованиях к подписи UEFI — Microsoft Tech Community.
Агентство по безопасности инфраструктуры & кибербезопасности недавно обнаружило, что уязвимости встроенного ПО в целом продолжают расти. В то же время развертываемых методов устранения рисков встроенного ПО недостаточно для предотвращения современных атак, а меры по устранению рисков не применяются равномерно в реализациях встроенного ПО поставщика.
Эти выводы согласуются с призывами к действию со стороны сообщества Tianocore, сообщества исследований безопасности и сообщества UEFI. Базовые базовые методы устранения рисков необходимы в экосистеме для повышения безопасности платформы устройств Windows.
Для реализации этой цели корпорация Майкрософт вводит следующие требования к подписи ЦС UEFI сторонних разработчиков.
Требования к подписывам для устранения рисков в памяти
Метаданные PE/COFF
Выравнивание разделов отправленного PE-файла должно быть выровнено по размеру страницы. Это значение должно быть 4 КБ или больше 2 (например, 64 КБ).
Флаги разделов не должны объединять
IMAGE_SCN_MEM_WRITE
иIMAGE_SCN_MEM_EXECUTE
для любого из указанных разделов.
Если реализовано: аттестация БИБЛИОТЕКИ PE/COFF
- Характеристики БИБЛИОТЕКи DLL должны включать
IMAGE_DLLCHARACTERISTICS_NX_COMPAT
Так как соответствие требованиям No Execute (NX) не может быть обнаружено статически, встроенное ПО, которое задает IMAGE_DLLCHARACTERISTICS_NX_COMPAT
, должно выполнить следующие действия, чтобы убедиться, что образ встроенного ПО может правильно работать с примененными средствами защиты NX.
Модуль кода не должен выполнять самоизменяющийся код; это означает, что разделы кода приложения не должны иметь атрибут write. Любая попытка изменить значения в диапазоне памяти приведет к сбою выполнения.
Если модуль кода пытается загрузить какой-либо внутренний код в память для выполнения или если он обеспечивает поддержку внешнего загрузчика, он должен использовать
EFI_MEMORY_ATTRIBUTE_PROTOCOL
соответствующим образом. Этот необязательный протокол позволяет вызывающей объекту получать, задавать и очищать атрибуты чтения, записи и выполнения для четко определенного диапазона памяти.- Внутренний код, загруженный в память, должен поддерживать
WRITE
иEXECUTE
эксклюзивность. Атрибуты также должны быть изменены после загрузки кода, чтобы разрешить выполнение. - Внешние загрузчики должны поддерживаться
EFI_MEMORY_ATTRIBUTE_PROTOCOL
, если они доступны в системе. Загрузчик не должен предполагать, что только что выделенная память позволяет выполнять код (даже для типов кода).
- Внутренний код, загруженный в память, должен поддерживать
Приложение не должно предполагать, что все диапазоны памяти являются допустимыми; в частности, страница 0 (обычно по физическому адресу от 0 до 4 КБ).
Пространство стека нельзя использовать для выполнения кода.
Средство проверки изображений PE/COFF доступно для проверки соответствия изображения требованиям к метаданным (требованиям к pe/COFF статического изображения) для задания бита характеристики DLL.
Применение требований к устранению рисков памяти
Выравнивание раздела изображения позволяет среде встроенного ПО UEFI/Platform Initialization (PI) защитить раздел с помощью атрибутов таблицы страниц. Кроме того, компоненты встроенного ПО должны предполагать, что атрибуты таблицы страниц будут применены к образу встроенного ПО, чтобы включить следующие функции:
Защита памяти no Execute (NX) — все разделы, не относящиеся к коду, будут помечены как NX, а разделы кода будут помечены как доступные только для чтения (RO), чтобы предотвратить выполнение внешних разделов кода и перезапись разделов кода.
Защита страниц — страница защиты может быть добавлена до и после выделения соответствующей страницы. Любая попытка получить доступ к странице guard приведет к сбою страницы (#PF).
Охранники пула — страница головной и хвостовой охранной страницы будут размещаться до и после той части памяти, которую занимает выделенный пул. Рекомендуется, чтобы поставщик проверял как недополученный поток (с помощью страницы головной защиты), так и переполнение (с помощью заключительной страницы).
Защита стека ЦП. Страница защиты в таблице страниц имеет значение Не присутствует и помещается в нижнюю часть стека для обнаружения переполнения стека.
Защита указателя NULL — нет доступа к первой странице (при нулевом адресе). Хотя устаревшие реализации BIOS помещали таблицу векторов прерываний (IVT) в это расположение, встроенное ПО UEFI должно ожидать, что эта страница помечена как Не представлена для перехвата разыменовок указателя NULL.
Выравнивание файлов и разделов
Компоновщики, такие как MSVC, обычно предлагают несколько вариантов выравнивания. Например, в MSVC влияет на выравнивание в макете двоичного файла, /FILEALIGN
что может оказать относительно значительное влияние на общий размер файла. /ALIGN
управляет выравниванием различных разделов в памяти после загрузки. Это выравнивание раздела (/ALIGN
) является важным для этих изменений.
обратная совместимость
Встроенное ПО платформы может сохранить обратную совместимость при попытке включить IMAGE_DLLCHARACTERISTICS_NX_COMPAT
, восстанавливая выделение памяти RWX при загрузке модуля, для которых не IMAGE_DLLCHARACTERISTICS_NX_COMPAT
задан бит. Ожидается, что эта политика будет удалена со временем, когда экосистема примет это изменение.
Связанные ресурсы
/ALIGN (выравнивание разделов)
/FILEALIGN (выравнивание разделов в файлах)
Обзор за пределами BIOS — защита памяти в BIOS UEFI BIOS
Стратегия DHS CISA для устранения уязвимостей ниже ОС среди худших преступников
Project Mu: функция защиты памяти
Средство проверки изображений PE/COFF
Защита экосистемы UEFI: цепочка поставок встроенного ПО жестко (закодирована)
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по