Опубліковано реліз проекту 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 використовувати calaback-дзвінки, що надаються SeaBIOS, наприклад, для звернення до обладнання, до якого з payload GRUB2 немає доступу.
- Додано захист від атаки SinkHole, що дозволяє виконати код на рівні SMM (System Management Mode).
- Реалізовано вбудовану можливість генерації статичних таблиць сторінок пам'яті з асемблерних файлів, без необхідності виклику сторонніх утиліт.
- Дозволено запис налагоджувальної інформації в консоль CBMEMC з обробників SMI під час використання DEBUG_SMI.
- Змінено систему обробників ініціалізації CBMEM, замість прив'язаних до стадій обробників *_CBMEM_INIT_HOOK запропоновано два обробники CBMEM_CREATION_HOOK (використовується на початковій стадії, що створює cbmem) і CBMEM_READY_HOOK (використовується на будь-яких.
- Додано підтримку 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).
Джерело: opennet.ru