Опубликован релиз проекта CoreBoot 4.17, в рамках которого разрабатывается свободная альтернатива проприетарным прошивкам и BIOS. Код проекта распространяется под лицензией GPLv2. В создании новой версии приняло участие 150 разработчиков, которые подготовили более 1300 изменений.
Основные изменения:
- Устранена уязвимость (CVE-2022-29264), проявляющаяся в выпусках CoreBoot с 4.13 по 4.16 и позволяющая на системах с AP (Application Processor) выполнить код на уровне SMM (System Management Mode), более приоритетном (Ring -2), чем режим гипервизора и нулевое кольцо защиты, и имеющим неограниченный доступ ко всей памяти. Проблема вызвана некорректным вызовом обработчика SMI в модуле smm_module_loader.
- Добавлена поддержка 12 материнских плат, 5 из которых используется на устройствах с Chrome OS или на серверах Google. Среди не связанных с Googlе плат:
- Clevo L140MU / L141MU / L142MU
- Dell Precision T1650
- HP Z220 CMT Workstation
- Star Labs LabTop Mk III (i7-8550u), LabTop Mk IV (i3-10110U, i7-10710U), Lite Mk III (N5000) и Lite Mk IV (N5030).
- Прекращена поддержка материнских плат Google Deltan и Deltaur.
- Добавлен новый payload coreDOOM, позволяющий запустить игру DOOM из Coreboot. В проекте использован код doomgeneric, портированный на libpayload. Для вывода используется линейный фреймбуфер Coreboot, а WAD-файлы с игровыми ресурсами загружаются из CBFS.
- Обновлены payload-компоненты SeaBIOS 1.16.0 и iPXE 2022.1.
- Добавлен режим SeaGRUB (GRUB2 поверх SeaBIOS), позволяющий в GRUB2 использовать предоставляемые SeaBIOS callback-вызовы, например, для обращения к оборудованию, к которому из payload GRUB2 нет доступа.
- Добавлена защита от атаки SinkHole, позволяющей выполнить код на уровне SMM (System Management Mode).
- Реализована встроенная возможность генерации статических таблиц страниц памяти из ассемблерных файлов, без необходимости вызова сторонних утилит.
- Разрешена запись отладочной информации в консоль CBMEMC из обработчиков SMI при использовании DEBUG_SMI.
- Изменена система обработчиков инициализации CBMEM, вместо привязанных к стадиям обработчиков *_CBMEM_INIT_HOOK предложено два обработчика CBMEM_CREATION_HOOK (используется на начальной стадии, создающей cbmem) и CBMEM_READY_HOOK (используется на любых стадиях, на которых уже создан cbmem).
- Добавлена поддержка PSB (Platform Secure Boot), активируемая процессором PSP (Platform Security Processor) для верификации целостности BIOS по цифровой подписи.
- Добавлена собственная реализация обработчика отладочных данных, передаваемых из FSP (FSP Debug Handler).
- Добавлены специфичные для производителей TIS-функции (TPM Interface Specification) для чтения и записи напрямую из регистров TPM (Trusted Platform Module) – tis_vendor_read() и tis_vendor_write().
- Добавлена поддержка перехвата разыменований нулевых указателей через отладочные регистры.
- Реализовано определение устройств i2c, упрощающее работу с платами, оснащёнными тачпадами или сенсорными экранами разных производителей.
- Добавлена возможность сохранения данных о времени в формате, подходящем для генерации графиков FlameGraph, наглядно демонстрирующих какое время тратится на разных стадиях запуска.
- В утилиту cbmem добавлена опция для добавления в таблицу cbmem “timestamp” времени из пространства пользователя, что даёт возможность отражать в cbmem события на стадиях, выполняемых после CoreBoot.
Дополнительно можно отметить публикацию фондом OSFF (Open-Source Firmware Foundation) открытого письма к компании Intel, в котором предлагается сделать более модульными наборы поддержки прошивок (FSP, Firmware Support Package) и начать публиковать документацию, связанную с инициализацией SoC Intel.
Отсутствие кода FSP существенно затрудняет создание открытых прошивок и мешает продвижению проектов Coreboot, U-Boot и LinuxBoot на оборудовании Intel. Ранее похожая инициатива увенчалась успехом и компания Intel открыла код запрошенных сообществом прошивок блока PSE (Programmable Services Engine).