Luka w procesorach AMD, pozwalająca na obejście mechanizmu ochrony SEV (Secure Encrypted Virtualization)

Naukowcy z Centrum Bezpieczeństwa Informacji Helmholtza (CISPA) opublikowali nową metodę ataku CacheWarp, która pozwala na skompromitowanie mechanizmu ochrony AMD SEV (Secure Encrypted Virtualization), stosowanego w systemach wirtualizacji, aby chronić maszyny wirtualne przed ingerencją ze strony hypervisorów lub administratorów hostów. Proponowana metoda pozwala napastnikowi, który ma dostęp do hypervisora, na wykonanie złośliwego kodu oraz uzyskanie wyższych uprawnień w maszynie wirtualnej chronionej przez AMD SEV.

Atak opiera się na wykorzystaniu luki (CVE-2023-20592), spowodowanej niewłaściwą obsługą pamięci podręcznej podczas wykonywania instrukcji procesora INVD, która umożliwia niespójność danych w pamięci oraz pamięci podręcznej, oraz pozwala na ominięcie mechanizmów utrzymania integralności pamięci maszyn wirtualnych, realizowanych na bazie rozszerzeń SEV-ES i SEV-SNP. Luka dotyczy procesorów AMD EPYC pierwszej, drugiej i trzeciej generacji.

Dla procesorów AMD EPYC trzeciej generacji (Zen 3) problem został rozwiązany w listopadowej aktualizacji mikrokodu wydanej wczoraj przez firmę AMD (poprawka nie powoduje obniżenia wydajności). Dla pierwszej i drugiej generacji procesorów AMD EPYC (Zen 1 i Zen 2) nie przewidziano zabezpieczenia, ponieważ w tych CPU brakuje wsparcia dla rozszerzenia SEV-SNP, które zapewnia kontrolę integralności. maszyn wirtualnychCzwartej generacji procesory AMD EPYC 'Genoa' oparte na mikroarchitekturze 'Zen 4' nie są podatne na tę lukę.

Technologia AMD SEV jest wykorzystywana do izolacji maszyn wirtualnych przez takich dostawców chmurowych jak Amazon Web Services (AWS), Google Cloud, Microsoft Azure oraz Oracle Compute Infrastructure (OCI). Ochrona AMD SEV jest realizowana poprzez szyfrowanie na poziomie sprzętowym pamięci maszyn wirtualnych. Ponadto, dzięki rozszerzeniu SEV-ES (Encrypted State), ochrona rejestrów CPU jest realizowana. Dostęp do odszyfrowanych danych ma tylko aktualny system gościa, podczas gdy pozostałe maszyn wirtualnych oraz hypervisor otrzymują zaszyfrowany zbiór danych w przypadku próby dostępu do tej pamięci.

W trzeciej generacji procesorów AMD EPYC wprowadzono dodatkowe rozszerzenie SEV-SNP (Secure Nested Paging), które zapewnia bezpieczną obsługę zagnieżdżonych tabel stron pamięci. Oprócz ogólnego szyfrowania pamięci i izolacji rejestrów, w SEV-SNP wdrożono dodatkowe środki ochrony integralności pamięci, które zapobiegają modyfikacjom VM ze strony hipernadzorcy. Zarządzanie kluczami szyfrowania odbywa się po stronie wbudowanego w chip osobnego procesora PSP (Platform Security Processor), opartego na architekturze ARM.

Istota proponowanej metody ataku polega na wykorzystaniu instrukcji INVD do unieważnienia bloków (linii) w pamięci podręcznej brudnych stron (dirty pages) bez zapisywania zgromadzonych w pamięci podręcznej danych w pamięci (write-back). W ten sposób metoda pozwala na usunięcie zmienionych danych z pamięci podręcznej, nie zmieniając stanu pamięci. Aby przeprowadzić atak, proponuje się wykorzystanie wyjątków programowych (fault injection) do przerwania pracy wirtualnej maszyny w dwóch miejscach: w pierwszym miejscu atakujący wywołuje instrukcję „wbnoinvd” w celu zresetowania wszystkich zgromadzonych w pamięci podręcznej operacji zapisu do pamięci, a w drugim miejscu wywołuje instrukcję „invd” w celu przywrócenia nieodzwierciedlonych w pamięci operacji zapisu do starego stanu.

W celu sprawdzenia swoich systemów pod kątem podatności opublikowano prototyp exploita, który pozwala na podmianę wyjątku w wirtualnej maszynie chronionej przez AMD SEV oraz na przywrócenie w starej postaci niespisanych w pamięci zmian w VM. Przywrócenie zmian może być wykorzystane do modyfikacji przebiegu wykonywania programu poprzez zwrócenie starego adresu zwrotu na stosie lub do użycia przy wejściu parametrów starej sesji, dla której wcześniej przeprowadzono autoryzację, poprzez zwrócenie wartości wskaźnika autoryzacji.

Na przykład, badacze pokazali możliwość zastosowania metody CacheWarp do przeprowadzenia ataku Bellcore na realizację algorytmu RSA-CRT w bibliotece ipp-crypto, co pozwoliło na odzyskanie klucza prywatnego poprzez podstawienie błędów podczas obliczania podpisu cyfrowego. Zademonstrowano również, w jaki sposób można podmienić parametry weryfikacji sesji OpenSSH podczas zdalnego połączenia z systemem gościnnym, a następnie zmienić stan weryfikacji przy uruchamianiu narzędzia sudo, aby uzyskać uprawnienia root w Ubuntu 20.04. Działanie exploita zostało sprawdzone na systemach z procesorami AMD EPYC 7252, 7313P i 7443.

Ź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