Хакеры научились взламывать компьютеры до включения операционной системы.

В открытом доступе появился обновлённый пакет исправлений для загрузчика GRUB2, закрывающий сразу 6 уязвимостей, большинство из которых приводит к обращению к памяти после её освобождения. Подобные ошибки потенциально позволяют обойти механизм UEFI Secure Boot, вмешавшись в доверенную цепочку загрузки до запуска операционной системы. Разработчики подчёркивают, что одного обновления пакета недостаточно: требуется пересобрать все подписываемые элементы загрузочной цепочки — инсталляторы, загрузчики, fwupd-прошивки, shim и пакеты с ядром.
Исследователи подробно описали каждую из обнаруженных ошибок. Самой значимой считают CVE-2025-61661, связанную с обработкой строковых дескрипторов USB-устройств в кодировках UTF-8 и UTF-16. Недочёт вызван расхождением между размером строки, указанным устройством в первом ответе, и объёмом данных, которые реально используются при преобразовании кодировки. Модифицированное USB-устройство может намеренно сообщить меньшую длину строки, что приводит к записи за пределы выделенной памяти.
Другая группа уязвимостей — CVE-2025-61663, CVE-2025-61664, CVE-2025-54770 и CVE-2025-61662 — вызвана тем, что обработчики ряда команд продолжают оставаться в памяти после выгрузки соответствующих модулей. К проблемным относятся normal, normal_exit, net_set_vlan и gettext, используемые модулями normal, net и gettext. Выполнение этих команд после выгрузки приводит к обращению к уже освобождённым областям. Похожие ошибки обнаружены в тестовых командах functional_test и all_functional_test, но CVE им не присвоили, поскольку они входят только в тестовую библиотеку, не предназначенную для релизных сборок.
Отдельно выделена CVE-2025-54771 — ошибка учёта ссылок на структуры файловых систем (fs) в grub_file_close(), также приводящая к сценарию use-after-free при закрытии файлового дескриптора.
Важность этих уязвимостей связана с особенностями доверенной загрузки в современных Linux-дистрибутивах. Большинство систем используют прослойку shim, подписанную ключом Microsoft. Она проверяет GRUB2, после чего управление передаётся загрузчику, запускающему ядро. Такая архитектура избавляет разработчиков от необходимости получать подписи Microsoft для каждого обновления загрузчика или ядра. Но если злоумышленнику удаётся выполнить код после проверки shim и до загрузки системы, он может изменить загружаемый образ, внедрить собственные компоненты или обойти режим Lockdown.
Для блокировки уязвимых версий без отзыва действующих подписей используется механизм SBAT — Secure Boot Advanced Targeting. Поддержка SBAT реализована в GRUB2, shim и fwupd во всех крупных дистрибутивах. Механизм добавляет в UEFI-компоненты метаданные о производителе, продукте, компоненте и версии. Подписанные метаданные позволяют избирательно запрещать конкретные сборки без изменения глобальных ключей Secure Boot.
Перед выпуском SBAT для блокировки приходилось обновлять список отозванных сертификатов UEFI (dbx). Это было необходимо, поскольку злоумышленник мог загрузить систему со старого носителя, содержащего уязвимую, но подписанную версию GRUB2, и тем самым обходить доверенную загрузку. SBAT устраняет эту зависимость, позволяя точечно запрещать отдельные версии компонентов.