Zdalna luka w warstwie Shim, umożliwiająca obejście UEFI Secure Boot

W warstwie Shim, stosowanej w większości dystrybucji Linux do weryfikowanej bootowania w trybie UEFI Secure Boot, wykryto lukę (CVE-2023-40547), która może prowadzić do zdalnego wykonania kodu oraz ominięcia mechanizmu weryfikowanego bootowania UEFI Secure Boot. Napastnik, kontrolujący serwer HTTP, do którego odwołuje się Shim, może zwrócić specjalnie sformatowaną odpowiedź, prowadzącą do kontrolowanego zapisu w obszarze poza buforem, co umożliwia wykonanie kodu na wczesnym etapie uruchamiania.

Luka została spowodowana błędem w kodzie ładowania plików przez HTTP, który objawia się podczas przetwarzania nieprawidłowych odpowiedzi zwracanych przez serwer HTTP, do którego odwołuje się shim. Tryb HTTPBoot w Shim jest wspierany od 2016 roku i umożliwia uruchamianie przez sieć, wykorzystując protokół HTTP do pobierania pliku z bootloaderem, wywoływanym na następnym etapie. Shim podczas ładowania plików przez HTTP rezerwuje bufor dla odbieranych danych, uwzględniając nie rzeczywistą wielkość danych, ale wielkość podaną w nagłówku HTTP „Content-Length”. W związku z tym, zwracając w nagłówku Content-Length mniejszą wartość, można osiągnąć zapis końca żądania w pamięci poza buforem.

Shim jest podpisany cyfrowo przez Microsoft i weryfikuje GRUB2 własnym certyfikatem, co pozwala programistom dystrybucji nie podpisywać każdej aktualizacji jądra i GRUB w Microsoft. Luka w Shim daje możliwość wniknięcia w łańcuch zaufania przy aktywnym trybie Secure Boot oraz uzyskania pełnej kontroli nad dalszym procesem uruchamiania, na przykład do uruchamiania innego systemu operacyjnego, modyfikacji komponentów systemu operacyjnego oraz ominięcia ochrony Lockdown.

Luka została usunięta w wydaniu Shim 15.8, ale w celu całkowitego zablokowania ataku przez Shim wymagane jest podpisanie nowej wersji przez Microsoft i wprowadzenie jej do dystrybucji. Status usunięcia luki w dystrybucjach można ocenić na tych stronach: Debian, Ubuntu, SUSE, RHEL, Fedora. Problem polega na tym, że bez odwołania podpisu dla starej wersji poprawka jest bezsensowna, ponieważ napastnik może do skompromitowania UEFI Secure Boot użyć nośnika startowego z podatną wersją Shim. Jednak odwołanie podpisu doprowadzi do niemożności weryfikowanego uruchamiania dystrybucji, które nadal korzystają ze starej wersji Shim.

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 umożliwia blokowanie użycia podpisu cyfrowego dla poszczególnych numerów wersji komponentów bez potrzeby rezygnacji z kluczy do Secure Boot. Blokowanie luk bezpieczeństwa za pomocą SBAT nie wymaga korzystania z listy unieważnionych certyfikatów UEFI (dbx) i odbywa się na poziomie wymiany wewnętrznego klucza do generowania podpisów oraz aktualizacji GRUB2, shim i innych dostarczanych przez dystrybucje artefaktów rozruchowych.

Oprócz omawianej luki w Shim 15.8 naprawiono również kilka mniej niebezpiecznych problemów, wykorzystywanych lokalnie:

  • CVE-2023-40548 — przepełnienie liczb całkowitych w funkcji verify_sbat_section, prowadzące do przepełnienia bufora w systemach 32-bitowych.
  • CVE-2023-40546 — odczyt z obszaru pamięci poza buforem podczas wyświetlania komunikatów o błędach za pomocą funkcji LogError().
  • CVE-2023-40549 — odczyt z obszaru pamięci poza buforem podczas przetwarzania w funkcji verify_buffer_authenticode() specjalnie sformatowanego pliku w formacie PE.
  • CVE-2023-40550 — odczyt z obszaru pamięci poza buforem w funkcji verify_buffer_sbat().
  • CVE-2023-40551 — odczyt z obszaru pamięci poza buforem podczas analizy plików w formacie MZ.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster