Du GRUB2 pažeidžiamumai, leidžiantys apeiti UEFI saugaus įkrovos apsaugą

Раскрыты сведения о двух уязвимостях в загрузчике GRUB2, которые могут привести к выполнению кода при использовании специально оформленных шрифтов и обработке определённых Unicode-последовательностей. Уязвимости могут использоваться для обхода механизма верифицированной загрузки UEFI Secure Boot.

Nustatyti pažeidžiamumai:

  • CVE-2022-2601 — переполнение буфера в функции grub_font_construct_glyph() при обработке специально оформленных шрифтов в формате pf2, возникающее из-за неверного расчёта параметра max_glyph_size и выделения области памяти, заведомо меньшей, чем необходимо для размещения глифов.
  • CVE-2022-3775 — запись за пределы выделенной области памяти при отрисовке некоторых последовательностей Unicode специально оформленным шрифтом. Проблема присутствует в коде обработки шрифтов и вызвана отсутствием должных проверок соответствия ширины и высоты глифа размеру имеющейся битовой карты. Атакующий может подобрать ввод таким образом, чтобы вызвать запись хвоста данных на пределами выделенного буфера. Отмечается, что несмотря на сложность эксплуатации уязвимости, доведение проблемы до выполнения кода не исключается.

Исправление опубликовано в виде патча. Статус устранения уязвимостей в дистрибутивах можно оценить на данных страницах: Ubuntu, SUSE, RHEL, Fedora, Debian. Для устранения проблем в GRUB2 недостаточно просто обновить пакет, потребуется также сформировать новые внутренние цифровые подписи и обновлять инсталляторы, загрузчики, пакеты с ядром, fwupd-прошивки и shim-прослойку.

Daugumoje „Linux“ paskirstymų naudojamas nedidelis „Microsoft“ skaitmeniniu parašu pasirašytas tarpinis sluoksnis, kad būtų galima patikrinti paleidimą UEFI saugaus įkrovos režimu. Šis sluoksnis patvirtina GRUB2 naudodamas savo sertifikatą, kuris leidžia platinimo kūrėjams neturėti kiekvieno branduolio ir GRUB naujinimo, sertifikuotų Microsoft. GRUB2 pažeidžiamumas leidžia pasiekti savo kodo vykdymą etape po sėkmingo tarpinio patikrinimo, bet prieš įkeliant operacinę sistemą, įsiterpiant į pasitikėjimo grandinę, kai aktyvus saugaus įkrovos režimas, ir visiškai valdyti tolesnį įkrovos procesą, įskaitant įkelti kitą OS, modifikuoti operacinės sistemos komponentų sistemą ir apeiti užrakinimo apsaugą.

Norėdami užblokuoti pažeidžiamumą neatšaukdami skaitmeninio parašo, paskirstymai gali naudoti SBAT (UEFI Secure Boot Advanced Targeting) mechanizmą, kuris palaikomas GRUB2, shim ir fwupd daugelyje populiariausių Linux platinimų. SBAT buvo sukurtas kartu su Microsoft ir apima papildomų metaduomenų įtraukimą į vykdomuosius UEFI komponentų failus, įskaitant informaciją apie gamintoją, produktą, komponentą ir versiją. Nurodyti metaduomenys yra sertifikuoti skaitmeniniu parašu ir gali būti atskirai įtraukti į leidžiamų arba draudžiamų UEFI saugaus įkrovos komponentų sąrašus.

SBAT позволяет блокировать использование цифровой подписи для отдельных номеров версий компонентов без необходимости отзыва ключей для Secure Boot. Блокирование уязвимостей через SBAT не требует использования списка отозванных сертификатов UEFI (dbx), а производится на уровне замены внутреннего ключа для формирования подписей и обновления GRUB2, shim и других поставляемых дистрибутивами загрузочных артефактов. До внедрения SBAT, обновление списка отозванных сертификатов (dbx, UEFI Revocation List) было обязательным условием полного блокирования уязвимости, так как атакующий, независимо от используемой операционной системы, мог для компрометации UEFI Secure Boot использовать загрузочный носитель со старой уязвимой версией GRUB2, заверенной цифровой подписью.

Šaltinis: opennet.ru

Добавить комментарий