В 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
