Luka w procesorach AMD pozwalająca na ominięcie mechanizmu zabezpieczającego SEV (Secure Encrypted Virtualization)

Naukowcy z Helmholtz Center for Information Security (CISPA) opublikowali nową metodę ataku CacheWarp mającą na celu naruszenie mechanizmu bezpieczeństwa AMD SEV (Secure Encrypted Virtualization) stosowanego w systemach wirtualizacyjnych w celu ochrony maszyn wirtualnych przed ingerencją ze strony hypervisora ​​lub administratora systemu hosta. Proponowana metoda umożliwia atakującemu posiadającemu dostęp do hypervisora ​​wykonanie kodu strony trzeciej i eskalację uprawnień na maszynie wirtualnej chronionej za pomocą AMD SEV.

Atak polega na wykorzystaniu luki (CVE-2023-20592) spowodowanej nieprawidłowym działaniem pamięci podręcznej podczas wykonywania instrukcji procesora INVD, za pomocą której możliwe jest osiągnięcie niezgodności danych w pamięci i pamięci podręcznej oraz mechanizmy obejścia zapewniające integralność pamięci maszyny wirtualnej, realizowane w oparciu o rozszerzenia SEV-ES i SEV-SNP. Luka dotyczy procesorów AMD EPYC od pierwszej do trzeciej generacji.

W przypadku procesorów AMD EPYC trzeciej generacji (Zen 3) problem został rozwiązany w listopadowej aktualizacji mikrokodu wydanej wczoraj przez firmę AMD (poprawka nie powoduje żadnego pogorszenia wydajności). W przypadku pierwszej i drugiej generacji AMD EPYC (Zen 1 i Zen 2) ochrona nie jest zapewniona, ponieważ te procesory nie obsługują rozszerzenia SEV-SNP, które zapewnia kontrolę integralności maszyn wirtualnych. Czwarta generacja procesorów AMD AMD EPYC „Genoa” oparta na mikroarchitekturze „Zen 4” nie jest podatna na ataki.

Technologia AMD SEV jest wykorzystywana do izolacji maszyn wirtualnych przez dostawców usług w chmurze, takich jak Amazon Web Services (AWS), Google Cloud, Microsoft Azure i Oracle Compute Infrastructure (OCI). Ochrona AMD SEV jest realizowana poprzez szyfrowanie na poziomie sprzętowym pamięci maszyny wirtualnej. Dodatkowo rozszerzenie SEV-ES (Encrypted State) chroni rejestry procesora. Tylko bieżący system gościa ma dostęp do odszyfrowanych danych, a gdy inne maszyny wirtualne i hypervisor próbują uzyskać dostęp do tej pamięci, otrzymują zaszyfrowany zestaw danych.

Trzecia generacja procesorów AMD EPYC wprowadziła dodatkowe rozszerzenie SEV-SNP (Secure Nested Paging), które zapewnia bezpieczną pracę tablic stron pamięci zagnieżdżonej. Oprócz ogólnego szyfrowania pamięci i izolacji rejestrów, SEV-SNP wdraża dodatkowe środki w celu ochrony integralności pamięci, zapobiegając zmianom w maszynie wirtualnej przez hypervisor. Zarządzanie kluczami szyfrującymi odbywa się po stronie osobnego procesora PSP (Platform Security Processor) wbudowanego w chip, realizowanego w oparciu o architekturę ARM.

Istotą proponowanej metody ataku jest wykorzystanie instrukcji INVD do unieważniania bloków (linii) w pamięci podręcznej brudnych stron bez zrzucania danych zgromadzonych w pamięci podręcznej do pamięci (zapis zwrotny). Zatem metoda pozwala na usunięcie zmienionych danych z pamięci podręcznej bez zmiany stanu pamięci. W celu przeprowadzenia ataku proponuje się wykorzystanie wyjątków programowych (wstrzykiwanie błędów) w celu przerwania działania maszyny wirtualnej w dwóch miejscach: w pierwszej kolejności atakujący wywołuje instrukcję „wbnoinvd” w celu zresetowania wszystkich operacji zapisu do pamięci zgromadzonych w pamięci podręcznej, a w drugiej kolejności wywołuje instrukcję „invd”, która przywraca operacje zapisu nieodzwierciedlone w pamięci do starego stanu.

Aby sprawdzić systemy pod kątem luk, opublikowano prototyp exploita, który umożliwia wstawienie wyjątku do maszyny wirtualnej chronionej przez AMD SEV i przywrócenie zmian w maszynie wirtualnej, które nie zostały zresetowane do pamięci. Wycofanie zmiany można wykorzystać do zmiany przebiegu programu poprzez zwrócenie starego adresu zwrotnego na stosie lub do wykorzystania parametrów logowania ze starej sesji, która została wcześniej uwierzytelniona poprzez zwrócenie wartości atrybutu uwierzytelniania.

Przykładowo badacze wykazali możliwość wykorzystania metody CacheWarp do przeprowadzenia ataku Bellcore na implementację algorytmu RSA-CRT w bibliotece ipp-crypto, co umożliwiło odzyskanie klucza prywatnego poprzez podstawienie błędów przy obliczaniu wartości cyfrowej podpis. Pokazuje także, jak zmienić parametry weryfikacji sesji na OpenSSH podczas zdalnego łączenia się z systemem gościa, a następnie zmienić stan weryfikacji podczas uruchamiania narzędzia Sudo, aby uzyskać prawa roota w Ubuntu 20.04. Exploit został przetestowany na systemach z procesorami AMD EPYC 7252, 7313P i 7443.

Źródło: opennet.ru

Dodaj komentarz