Специалисты восстановили форматы BIOS по «отпечаткам пальцев» и открытым данным.

Разбирать BIOS и UEFI обновления обычно приходится почти вслепую. Внутри таких файлов вперемешку лежат прошивки, драйверы, контейнеры, образы и исполняемые модули, а нормальных инструментов, которые дают понятную картину содержимого, немного. Команда CERT из Carnegie Mellon SEI решила упростить эту задачу и выпустила CERT UEFI Parser, Python-инструмент для инспекции ROM-образов прошивок, установщиков и других файлов, связанных с UEFI.
CERT UEFI Parser написан для Python 3 и построен на фреймворке Construct, который используется для описания бинарных структур. Разработчики подчёркивают, что их парсер получился гибче эталонной реализации EDK2 и его проще расширять, если нужно поддержать проприетарные или экспериментальные форматы. Цель проекта — научиться понимать все типы данных, которые обычно встречаются внутри UEFI ROM, включая PE-файлы и структуры образов.
В основе инструмента не только данные из спецификаций UEFI, но и результаты независимых исследований прошивок. В качестве примера упоминаются работы Игоря Скочинского по Intel ME. При этом авторы отдельно отмечают, что проект не связан с NDA и другими ограничениями, а все проприетарные форматы были восстановлены по открытым источникам и собственному анализу.
Для работы парсеру нужен пакет cert-uefi-support, в котором собраны низкоуровневые утилиты для распаковки и работы с бинарными данными. Оба пакета доступны в PyPI и устанавливаются в виртуальное окружение. Графический интерфейс опционален и подключается через PySide6, который не ставится по умолчанию из-за большого размера зависимостей.
Запускать CERT UEFI Parser можно в четырёх режимах. Это GUI, текстовый вывод в терминал с ANSI-раскраской, полный JSON и «облегчённый» JSON с полями, которые удобны для генерации SBOM. В качестве тестовых образцов авторы предлагают брать BIOS или UEFI обновления с сайта производителя устройства. Полная поддержка всех моделей не гарантируется, но многие распространённые форматы от вендоров уже успешно разбираются, а изучение таких апдейтов помогает быстро понять возможности инструмента.