Две уязвимости в GRUB2, позволяващи заобикалянето на защитата UEFI Secure Boot

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

Разпознати уязвимости:

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

Поправката е публикувана под формата на патч. Статусът на отстраняване на уязвимостите в дистрибутивите може да бъде оценен на следните страници: Ubuntu, SUSE, RHEL, Fedora, Debian. За отстраняване на проблемите в GRUB2 не е достатъчно само да се обнови пакета, но също така е необходимо да се генерират нови вътрешни цифрови подписи и да се обновят инсталаторите, загрузчиците, пакетите с ядрото, fwupd фърмуерите и shim слоя.

В повечето Linux дистрибуции за удостоверено зареждане в режим UEFI Secure Boot се използва малък междинен слой shim, удостоверен с цифров подпис на Microsoft. Този слой удостоверява GRUB2 със собствен сертификат, което позволява на разработчиците на дистрибуции да не удостоверяват всяко обновление на ядрото и GRUB в Microsoft. Уязвимостите в GRUB2 позволяват изпълнението на собствен код след успешното удостоверяване на shim, но преди зареждането на операционната система, прекъсвайки веригата на доверие при активен режим Secure Boot и получавайки пълен контрол над процеса на зареждане, включително за зареждане на друга ОС, модификация на компонентите на операционната система и заобикаляне на защитата Lockdown.

За блокиране на уязвимостта без отзоваване на цифровия подпис, дистрибутивите могат да използват механизма SBAT (UEFI Secure Boot Advanced Targeting), чиято поддръжка е реализирана за GRUB2, shim и fwupd в повечето популярни дистрибутиви на Linux. SBAT е разработен съвместно с Microsoft и предполага добавяне в изпълняемите файлове на компонентите на UEFI допълнителни метаданни, които включват информация за производителя, продукта, компонента и версията. Посочените метаданни са удостоверени с цифров подпис и могат отделно да бъдат включвани в списъците с разрешени или забранени компоненти за UEFI Secure Boot.

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

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster