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

В GRUB2 бяха отстранени 7 уязвимости, които позволяват заобикаляне на механизма UEFI Secure Boot и стартиране на невярно удостоверен код, например, внедряване на зловреден софтуер, работещ на ниво зареждач или ядрото. Допълнително се отбелязва една уязвимост в междинния слой shim, която също позволява заобикаляне на UEFI Secure Boot. Групата уязвимости получи кодово име Boothole 3, по аналогия с предишните проблеми, открити в зареждача.

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

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

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

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

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

  • CVE-2021-3696, CVE-2021-3695 - преливане на буфера в купчината при обработка на специално форматирани PNG изображения, което теоретично може да бъде използвано за организиране на изпълнение на код от атакуващия и избягване на UEFI Secure Boot. Отбелязва се, че проблемът е трудно да се експлоатира, тъй като за създаване на работещ експлоит е необходимо да се вземат предвид много фактори и наличието на информация за разпределението на паметта.
  • CVE-2021-3697 - преливане чрез долна граница на буфера (buffer underflow) в кода за обработка на JPEG изображения. Експлоатацията на проблема изисква получаване на информация за разпределението на паметта и е на приблизително същото ниво на сложност, както и проблемът с PNG (CVSS 7.5).
  • CVE-2022-28733 — цяло число преливане в функцията grub_net_recv_ip4_packets(), позволяваща влияние на параметъра rsm->total_len чрез изпращане на специално форматиран IP пакет. Проблемът е оценен като най-опасен от представените уязвимости (CVSS 8.1). При успешна експлоатация уязвимостта дава възможност за записване на данни извън границите на буфера чрез заделяне на очевидно недостатъчен размер памет.
  • CVE-2022-28734 — еднобайтово преливане на буфера при обработка на разделени HTTP заглавия. Проблемът може да доведе до повреждане на метаданните на GRUB2 (запис на нулев байт незабавно след края на буфера) при разбор на специално форматирани HTTP заявки.
  • CVE-2022-28735 — проблем в верификатора shim_lock, позволяваща зареждане на файлове, които не принадлежат на ядрото. Уязвимостта може да бъде използвана за зареждане в режим UEFI Secure Boot на незаверени цифрово подписани модули на ядрото или непроверен код.
  • CVE-2022-28736 — достъп до вече освободена памет в функцията grub_cmd_chainloader() при повторно изпълнение на командата chainloader, използвана за зареждане на операционни системи, които не са поддържани в GRUB2. Експлоатацията може да доведе до изпълнение на код от нападателя, ако злонамереният потребител успее да определи характеристиките на разпределението на паметта в GRUB2.
  • CVE-2022-28737 — преливане на буфер в shim слоя, възникващо в функцията handle_image() при зареждане и изпълнение на специално оформени EFI образи.

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

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