Wprowadzenie
Firma Microsoft została poinformowana o luki w zabezpieczeniach menedżera rozruchu systemu Windows, która umożliwia osobie atakującej pominięcie bezpiecznego rozruchu. Problem w menedżerze rozruchu został rozwiązany i wydany jako aktualizacja zabezpieczeń. Pozostała luka polega na tym, że osoba atakująca z uprawnieniami administracyjnymi lub fizycznym dostępem do urządzenia może przywrócić menedżera rozruchu do wersji bez poprawki zabezpieczeń. Ta luka w zabezpieczeniach jest używana przez złośliwe oprogramowanie BlackLotus do ominięcia bezpiecznego rozruchu opisanego przez CVE-2023-24932. Aby rozwiązać ten problem, odwołamy wrażliwych menedżerów rozruchu.
Ze względu na dużą liczbę menedżerów rozruchu, które muszą zostać zablokowane, korzystamy z alternatywnego sposobu blokowania menedżerów rozruchu. Dotyczy to systemów operacyjnych innych niż Windows, ponieważ w tych systemach należy udostępnić poprawkę, aby uniemożliwić menedżerom rozruchu systemu Windows używanie ich jako wektora ataku w systemach operacyjnych innych niż Windows.
Więcej informacji
Jedną z metod blokowania wrażliwych plików binarnych aplikacji EFI przed załadowaniem przez oprogramowanie układowe jest dodanie przyśpieszeń aplikacji podatnych na zagrożenia do listy zakazanych plików UEFI (DBX). Lista DBX jest przechowywana w pamięci flash zarządzanej przez oprogramowanie układowe urządzeń. Ograniczeniem tej metody blokowania jest ograniczona pamięć flash oprogramowania układowego dostępna do przechowywania DBX. Z powodu tego ograniczenia i dużej liczby menedżerów rozruchu, którzy muszą zostać zablokowani (menedżerowie rozruchu systemu Windows z ponad 10 lat), nie można całkowicie polegać na systemie DBX w przypadku tego problemu.
W tym problemie wybraliśmy hybrydową metodę blokowania wrażliwych menedżerów rozruchu. Tylko kilku menedżerów rozruchu wydanych we wcześniejszych wersjach systemu Windows zostanie dodanych do systemu DBX. W przypadku Windows 10 i nowszych wersji zostaną użyte zasady kontroli aplikacji Windows Defender (WDAC), które blokują lukę w menedżerach rozruchu systemu Windows. Gdy zasady zostaną zastosowane do systemu Windows, menedżer rozruchu "zablokuje" zasady w systemie, dodając zmienną do oprogramowania układowego UEFI. Menedżerowie rozruchu systemu Windows będą przestrzegać zasad i blokady UEFI. Jeśli blokada UEFI jest w miejscu i zasady zostały usunięte, menedżer rozruchu systemu Windows nie uruchamia się. Jeśli zasady są w miejscu, menedżer rozruchu nie uruchomi się, jeśli został zablokowany przez zasady.
Wskazówki dotyczące blokowania wrażliwych menedżerów rozruchu systemu Windows
UWAGA Użytkownicy powinni mieć możliwość zastosowania zmiennej, aby mogli kontrolować, kiedy są chronieni.
Włączenie blokady UEFI spowoduje, że istniejące rozruchowe nośniki systemu Windows przestaną się uruchamiać do czasu aktualizacji nośnika za pomocą aktualizacji systemu Windows wydanych 9 maja 2023 r. lub później. Wskazówki dotyczące aktualizowania nośnika można znaleźć w aktualizacji KB5025885: Jak zarządzać odwołaniami Menedżera rozruchu systemu Windows w przypadku zmian bezpiecznego rozruchu skojarzonych z CVE-2023-24932.
-
W przypadku systemów z włączoną obsługą bezpiecznego rozruchu, które uruchamiają tylko systemy
operacyjne inne niż Windows W przypadku systemów, które tylko uruchamiają systemy operacyjne inne niż Windows i nigdy nie uruchamiają systemu Windows, te środki łagodzące mogą być stosowane do systemu natychmiast. -
W przypadku systemów z podwójnym rozruchem systemu Windows i innego systemu
operacyjnego W przypadku systemów, które uruchamiają system Windows, środki łagodzące dla systemów innych niż Windows powinny być stosowane dopiero po zaktualizowaniu systemu operacyjnego Windows do aktualizacji systemu Windows wydanych 9 maja 2023 r. lub później.
Tworzenie blokady UEFI
Blokada UEFI ma dwie zmienne, które są wymagane, aby zapobiec atakom wycofywania w Menedżerze rozruchu systemu Windows. Te zmienne są następujące:
-
Atrybuty SKU SiPolicy
Te zasady mają następujące atrybuty:
-
Identyfikator typu zasad:
{976d12c8-cb9f-4730-be52-54600843238e}
-
Określona nazwa pliku "SKUSiPolicy.p7b"
-
Konkretna fizyczna lokalizacja EFI\Microsoft\Boot
Podobnie jak wszystkie podpisane zasady WDAC, podpisane zasady jednostki SKU są chronione przez dwie zmienne UEFI:
-
SKU_POLICY_VERSION_NAME: "SKUSiPolicyVersion"
-
SKU_POLICY_UPDATE_POLICY_SIGNERS_NAME: "SKUSiPolicyUpdateSigners"
-
-
Zmienne SIPolicy jednostki
SKU W zasadach tych są używane dwie zmienne UEFI przechowywane w obszarze nazw efi/dostawcy
IDENTYFIKATOR GUID(SECUREBOOT_EFI_NAMESPACE_GUID):#define SECUREBOOT_EFI_NAMESPACE_GUID \
{0x77fa9abd, 0x0359, 0x4d32, \
{0xbd, 0x60, 0x28, 0xf4, 0xe7, 0x8f, 0x78, 0x4b}};
-
SKUSiPolicyVersion
-
jest typu ULONGLONG/UInt64 w czasie wykonywania
-
jest zdefiniowany przez <VersionEx>2.0.0.2</VersionEx> w zasadach XML w postaci (MAJOR. DROBNE. — ZMIANA. BUILDNUMBER)
-
Jest on przetłumaczony na ULONGLONG jako
((major##ULL << 48) + (numer pomocniczy##ULL << 32) + (wersja##ULL << 16) + numer kompilacji)
Każdy numer wersji ma 16 bitów, więc ma łącznie 64 bity.
-
Nowsza wersja zasad musi być równa lub większa niż wersja przechowywana w zmiennej UEFI w czasie wykonywania.
-
Opis: Ustaw wersję zasad rozruchu integralności kodu.
-
Atrybuty:
(EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS)
-
Identyfikator Guid obszaru nazw:
77fa9abd-0359-4d32-bd60-28f4e78f784b
-
Typ danych:
uint8_t[8]
-
Danych:
uint8_t SKUSiPolicyVersion[8] = { 0x2;0x0;0x0;0x0;0x0;0x0;0x2;0x0 };
-
-
SKUSiPolicyUpdateSigners
-
Musi być osobą podpisywać się w systemie Windows.
-
Opis: Informacje podpisywania zasad.
-
Atrybuty:
(EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS)
-
Identyfikator Guid obszaru nazw:
77fa9abd-0359-4d32-bd60-28f4e78f784bd
-
Typ danych:
uint8_t[131]
-
Danych:
uint8_tSkuSiPolicyUpdateSigners[131] =
{ 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x0b, 0x00, 0x00, 0x00, 0xd0, 0x91, 0x73, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
0x00, 0x00, 0x00, 0x00, 0x54, 0xa6, 0x78, 0x00
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
0x00, 0x00, 0x00, 0x00, 0x5c, 0xa6, 0x78, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
0x00, 0x00, 0x00, 0x00, 0x64, 0xa6, 0x78, 0x00
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0a, 0x2b, 0x06, 0x01,
0x04, 0x01, 0x82, 0x37, 0x0a, 0x03, 0x06, 0x00,
0x00, 0x00, 0x00};
-
-
Stosowanie rekordu DBX
W UEFI.org opublikowaliśmy plik DbxUpdate.bin dla tego problemu. Te skróty obejmują wszystkie wycofane menedżery rozruchu systemu Windows wydane między Windows 8 a pierwotnym wydaniem Windows 10, które nie przestrzegają zasad integralności kodu.
Niezwykle ważne jest, aby były one stosowane ostrożnie ze względu na ryzyko, że mogą one przerwać system podwójnego rozruchu, który korzysta z wielu systemów operacyjnych i jednego z tych menedżerów rozruchu. W krótkim okresie zalecamy, aby w każdym systemie te skróty były opcjonalnie stosowane.