Уязвимост в NTFS драйвера на GRUB2, позволяваща изпълнение на код и заобикаляне на UEFI Secure Boot.

В драйвера, който осигурява работа с файловата система NTFS в зареждача GRUB2, е открита уязвимост (CVE-2023-4692), която позволява изпълнението на произволен код на ниво зареждач при достъп до специално подготвен образ на файловата система. Уязвимостта може да се използва за заобикаляне на механизма за проверка на зареждането UEFI Secure Boot.

Уязвимостта е причинена от грешка в кода за парсинг на NTFS атрибута „$ATTRIBUTE_LIST“ (grub-core/fs/ntfs.c), която може да се използва за записване на информация, контролирана от потребителя, в област от паметта извън заделения буфер. При обработка на специално подготвен образ NTFS, препълването води до презапис на част от паметта на GRUB, а също така, при определени условия, до повреждане на областта на UEFI фърмуера, което потенциално позволява изпълнението на произволен код на ниво зареждач или фърмуер.

Освен това, в NTFS драйвера на GRUB2 е открита още една уязвимост (CVE-2023-4693), която позволява четене на съдържанието на произволна област от паметта при парсване на атрибута „$DATA“ в специално подготвен образ NTFS. Между другото, уязвимостта позволява извличането на конфиденциални данни, кеширани в паметта, или определяне на стойностите на EFI променливи.

Проблемите все още са решени само чрез пач. Статусът на отстраняване на уязвимостите в дистрибуциите може да се оцени на тези страници: Debian, Ubuntu, SUSE, RHEL, Fedora. За отстраняването на проблемите в 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 чрез зареждане.

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

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