Opublikowano zestaw poprawek usuwających 6 podatności w bootloaderze GRUB2, z których większość prowadzi do dostępu do pamięci po jej zwolnieniu (use-after-free). Potencjalnie odkryte problemy mogą być wykorzystywane do obejścia mechanizmu weryfikacji uruchamiania UEFI Secure Boot. Status usunięcia podatności w dystrybucjach można ocenić na stronach: Debian, Ubuntu, SUSE, RHEL, Arch i Fedora. Aby usunąć problemy w GRUB2, nie wystarczy jedynie zaktualizować pakiet, należy również utworzyć nowe wewnętrzne cyfrowe podpisy i aktualizować instalatory, bootloadery, pakiety jądra, firmware fwupd oraz warstwę shim.
Zidentyfikowane luki:
- CVE-2025-61661 — zapis poza wyznaczonym buforem w funkcji grub_usb_get_string(), który może być wykorzystywany podczas przetwarzania ciągów w kodowaniu UTF-8 i UTF-16, przesyłanych podczas podłączania urządzeń USB. Problem wynika z tego, że bufor był alokowany na podstawie rozmiaru ciągu określonego w pierwszej wiadomości z urządzenia USB, a rozmiar obliczano na podstawie późniejszych operacji odczytu z urządzenia USB. W związku z tym do ataku można użyć zmodyfikowanego urządzenia USB, które początkowo zwraca zawyżoną wartość rozmiaru.
- CVE-2025-61663, CVE-2025-61664, CVE-2025-54770, CVE-2025-61662 — brak czyszczenia obsługi komend „normal”, „normal_exit”, „net_set_vlan” i „gettext” podczas wyładowania modułów „normal”, „net” i „gettext”, co tworzy warunki do dostępu do pamięci po jej zwolnieniu (use-after-free) w przypadku wykonywania wymienionych komend po wyładowaniu odpowiednich modułów. Podobne podatności znaleziono również dla komend „functional_test” i „all_functional_test”, ale nie przyznano im identyfikatorów CVE, ponieważ komendy te wchodzą w skład biblioteki testowej i nie powinny być włączane do wersji roboczych.
- CVE-2025-54771 — błąd podczas liczenia odniesień do struktur „fs” w funkcji grub_file_close(), prowadzący do dostępu do pamięci po jej zwolnieniu (use-after-free).
W większości dystrybucji Linuxa do weryfikacji rozruchu w trybie UEFI Secure Boot używana jest mała warstwa shim, opatentowana cyfrowym podpisem Microsoft. Ta warstwa weryfikuje GRUB2 własnym certyfikatem, co pozwala deweloperom dystrybucji nie opatrywać każdym aktualizacją jądra i GRUB w Microsoft. W vulnerabilności w GRUB2 pozwalają na wykonanie własnego kodu na etapie po udanej weryfikacji shim, ale przed załadowaniem systemu operacyjnego, wbijając się w łańcuch zaufania przy aktywnym trybie Secure Boot i uzyskując pełną kontrolę nad dalszym procesem ładowania, na przykład, aby załadować inny system operacyjny, zmodyfikować komponenty systemu operacyjnego i obejść zabezpieczenia Lockdown.
Aby zablokować podatność bez wycofywania cyfrowego podpisu, dystrybucje mogą wykorzystać mechanizm SBAT (UEFI Secure Boot Advanced Targeting), którego wsparcie zostało wdrożone dla GRUB2, shim i fwupd w większości popularnych dystrybucji Linux. SBAT został zaprojektowany wspólnie z Microsoftem i zakłada dodanie do wykonywalnych plików komponentów UEFI dodatkowych metadanych, które zawierają informacje o producencie, produkcie, komponencie i wersji. Podane metadane są podpisywane cyfrowym podpisem i mogą być osobno dołączane do list dozwolonych lub zabronionych komponentów dla UEFI Secure Boot.
SBAT pozwala zablokować użycie cyfrowego podpisu dla poszczególnych numerów wersji komponentów bez konieczności wycofywania kluczy dla Secure Boot. Blokowanie podatności przez SBAT nie wymaga korzystania z listy wycofanych certyfikatów UEFI (dbx), a odbywa się na poziomie zastąpienia wewnętrznego klucza do formowania podpisów i aktualizacji GRUB2, shim i innych dostarczanych przez dystrybucje artefaktów rozruchowych. Do wprowadzenia SBAT, aktualizacja listy wycofanych certyfikatów (dbx, UEFI Revocation List) była obowiązkowym warunkiem pełnego zablokowania podatności, ponieważ atakujący, niezależnie od używanego systemu operacyjnego, mógł do skompromitowania UEFI Secure Boot użyć nośnika rozruchowego ze starszą podatną wersją GRUB2, opatentowaną cyfrowym podpisem.
Źródło: opennet.ru
