14.08.2022

Выпуск Coreboot 4.17

Опубликован релиз проекта 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).

Источник.