Компания Microsoft представила новый открытый проект Project Mu (https://microsoft.github.io/mu/), в рамках которого развивается окружение для UEFI, осуществляющее инициализацию оборудования и предоставляющее набор сервисов для загрузки операционной системы. Прошивки на базе Project Mu уже используются в таких продуктах Microsoft как Surface и Hyper-V. Проект основан на наработках открытого UEFI-стека TianoCore (https://www.tianocore.org/) EDK2 (https://github.com/tianocore/edk2), но не является форком, а позиционируется (https://microsoft.github.io/mu/faq/) надстройка (модуль "MU"), собираемая на основе свежих стабильных выпусков TianoCore и возвращающая исправления и специфичные для TianoCore изменения в основной проект. Наработки проекта распространяются (https://github.com/Microsoft/mu) под лицензией BSD.
Ключевой особенностью Project Mu является развитие идеи прошивки как сервиса (FaaS, Firmware as a Service), суть которой в предоставлении механизмов для поддержания UEFI и прошивок в актуальном состоянии. FaaS позволяет рассматривать прошивки как продукт, требующий постоянного обновления как для оперативного доведения до пользователей исправлений ошибок и уязвимостей, так и для добавления новой функциональности.
В отличие от TianoCore в Project Mu включены дополнительные возможности для улучшения поддержки продуктов Microsoft, увеличения масштабирования (быстрого сопровождения прошивок для множества разных продуктов), упрощения сопровождения прошивок и организации планового проведения обновлений. Предлагаемые проектом компоненты включают интерфейс пользователя, экранную клавиатуру, инструменты для безопасного управления настройками UEFI, высокопроизводительный загрузчик и набор примеров меню BIOS.
С целью повышения защищённости проектом проведена чистка кодовой базы TianoCore от устаревших компонентов и внесены изменения для снижения возможных векторов атак. Кроме кода проект также включает набор спецификаций по организации процесса разработки прошивок, развиваемых в соответствии с парадигмой FaaS, а также коллекцию тестов и инструментов для анализа и оптимизации качества прошивки.
Основные возможности Mu:
- Заменяемая, не привязанная к конкретным устройствам и оптимизированная для достижения высокой производительности реализация UEFI-стадии BDS (Boot Device Select). На данной стадии осуществляется инициализации устройств консоли, загрузка драйверов, выбор целевой системы для загрузки, монтирование накопителей и поиск загрузчика;
- Интерфейс настройки прошивки (DFCI, Device Firmware Configuration Interface) и средства для управления мобильным устройством (MDM, Mobile Device Management);
- Система парольной защиты BIOS, использующая для хэширования паролей схему PBKDF2;
- Поддержка верификации компонентов по цифровым подписям на базе расширения EKU (Extended Key Usage);
- Использование фреймворка Microsoft для проведения unit-тестов;
- Средства для аудита, проверки функциональности и оценки производительности для всех возможностей платформы;
- Масштабируемая система сборки, написанная на языке Python;
- Плагины для отслеживания перезаписи информации и анализа флеш-дескрипторов (Flash Descriptor, структура для программирования SPI Flash);
- Система управления бинарными пакетами, основанная на пакетном менеджере NuGet (https://www.nuget.org/);
- Возможность заверения цифровыми подписями компонентов, передаваемых при помощи механизма UEFI Capsule (средства для передачи бинарных наборов данных в прошивки EFI);
- Поддержка сборки компилятором Visual Studio;
- Поддержка кодирования бинарных объектов методом Base64;
- Пакет с поддержкой XML;
Функциональность, которая скоро будет реализована:
- Набор примеров меню для BIOS (в стиле MS Surface);
- Экранная клавиатура с управлением мышью или через сенсорный экран;
- Графический инструментарий для анализа производительности загрузки;
- Возможность обновления TPM-прошивок Infineon при помощи механизма Capsule;
- Система экранных уведомлений, информирующих пользователей о том, что устройство находится в неготовой к работе конфигурации;
Функции, уже интегрированные в TianoCore:
- Библиотека для безопасной манипуляции целыми числами;
- Система защиты от переполнения кучи;
- DXE-драйвер с реализацией ESRT (event-to-sink reliable transport);
- Масштабируемый фреймворк FMP (Firmware Management Protocol);
- Компонент для отображения прогресса применения обновления с использованием механизма Capsule;
- Оптимизации хэширования для TCG FV (Trusted Computing Group Firmware Volumes);
- Обработка корректного отключения NVME-контроллеров перед завершением работы.
URL: https://blogs.windows.com/buildingapps/2018/12/19/%E2.../
Новость: https://www.opennet.ru/opennews/art.shtml?num=49819