Публикуван беше набор от пачове, отстраняващи 6 уязвимости в зареждача GRUB2, от които повечето водят до достъп до памет след освобождаването ѝ (use-after-free). Потенциално идентифицираните проблеми могат да бъдат използвани за заобикаляне на механизма за проверка на зареждането UEFI Secure Boot. Статусът на отстраняването на уязвимостите в дистрибуциите може да бъде оценен на следните страници: Debian, Ubuntu, SUSE, RHEL, Arch и Fedora. За отстраняването на проблемите в GRUB2 не е достатъчно просто да се актуализира пакетът, необходимо е също така да се генерират нови вътрешни цифрови подписи и да се обновят инсталаторите, зареждачите, пакетите с ядрото, fwupd-прошивки и shim-бъфера.
Установени уязвимости:
- CVE-2025-61661 — запис извън обособения буфер в функцията grub_usb_get_string(), която може да бъде експлоатирана при обработка на низове в UTF-8 и UTF-16, предавани при свързването на USB-устройства. Проблемът е предизвикан от това, че буферът е бил одобрен на основата на размера на низа, посочен в първото съобщение от USB-устройството, а размерът при преобразуването на кодировката е изчисляван на база последвалите операции за четене от USB-устройството. Съответно за атака може да се използва модифицирано USB-устройство, което първоначално връща занижено значение за размера.
- CVE-2025-61663, CVE-2025-61664, CVE-2025-54770, CVE-2025-61662 — отсъствие на почистване на обработчиците на команди „normal“, „normal_exit“, „net_set_vlan“ и „gettext“ при разтоварването на модулите „normal“, „net“ и „gettext“, създаващо условия за достъп до памет след освобождаването ѝ (use-after-free) в случай на изпълнение на посочените команди след разтоварването на съответните модули. Подобни уязвимости също са открити за командите „functional_test“ и „all_functional_test“, но не им е присвоен CVE-идентификатор, тъй като тези команди са част от тестовата библиотека и не трябва да бъдат включвани в работните сборки.
- CVE-2025-54771 — грешка при преброяването на линковете към структури „fs“ в функцията grub_file_close(), водеща до достъп до памет след освобождаването ѝ (use-after-free).
В повечето 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
