В драйвера, който осигурява работа с файловата система 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
