Grupa badaczy z Uniwersytetów w Leuven, Lubeku i Birmingham opracowała metodę ataku BadRAM (CVE-2024-21944), która umożliwia ominięcie mechanizmu potwierdzania autentyczności i skompromitowanie środowisk chronionych za pomocą rozszerzenia SEV-SNP w procesorach AMD. Aby przeprowadzić atak, napastnik, z nielicznymi wyjątkami, musi uzyskać fizyczny dostęp do modułów pamięci, a także mieć możliwość wykonania kodu na poziomie zerowego pierścienia (ring0) na serwerze, który obsługuje chronione wirtualne środowiska.
Rozszerzenia AMD SEV (Secure Encrypted Virtualization) mają na celu zapewnienie gwarancji integralności pamięci maszyn wirtualnych oraz ich ochrony przed ingerencją i analizą ze strony administratora systemu hosta, który ma możliwość wykonania kodu na poziomie hypervisora. Początkowo ochrona AMD SEV ograniczała się do szyfrowania zawartości pamięci systemu gościa i izolacji rejestrów, ale później w procesorach AMD EPYC dodatkowo wprowadzono rozszerzenie SEV-SNP (Secure Nested Paging) do bezpiecznej obsługi zagnieżdżonych tabel stron pamięci, gwarantujące zachowanie integralności pamięci i zapobiegające wprowadzaniu zmian w pamięci systemu gościa przez hypervisor.
Mechanizm AMD SEV-SNP został stworzony, aby agencje wywiadowcze lub personel centrów danych i dostawców chmury, w których działają chronione systemy gościa, nie mogli ingerować w pracę systemu gościa. Proponowana metoda ataku BadRAM daje możliwość ominięcia zapewnianych gwarancji poprzez modyfikację metadanych SPD (Serial Presence Detect) w modułach pamięci DDR4 lub DDR5. W przypadku udanego ataku napastnik może nadpisać zaszyfrowane dane w pamięci systemu gościa (na poziomie szyfrogramu, bez możliwości deszyfrowania) i obejść mechanizm atestacji, na przykład w celu ukrycia wprowadzenia backdoora do wirtualnej maszyny chronionej za pomocą technologii SEV-SNP.
Atak polega na wstawianiu fikcyjnych parametrów modułu pamięci w SPD, które zmuszają procesor do odwoływania się do nieistniejących adresów, odzwierciedlających istniejące obszary pamięci. Napastnik może dostosować SPD w taki sposób, że moduł pamięci zwróci procesorowi rozmiar większy niż rzeczywiste parametry modułu. Po tym napastnik może przeprowadzić mapowanie wymyślonej nieistniejącej pamięci na rzeczywisty obszar w DRAM, który jest już używany w zaszyfrowanej postaci w zabezpieczonych systemach gościnnych. W rezultacie powstaje sytuacja, w której różne adresy wskazują na tę samą fizyczną pamięć (dwa obszary odzwierciedlają się w jednym obszarze w chipie DRAM), tzn. pod adresem fikcyjnego odzwierciedlonego obszaru pamięci można uzyskać dostęp do już używanej rzeczywistej pamięci i ominąć mechanizmy ochrony pamięci w CPU.

Do przeprowadzenia ataku wystarczy zbudować najprostszy programator kosztujący około 10 dolarów, składający się z mikro kontrolera Raspberry Pi Pico, złącza dla modułów DDR4/DD5 oraz źródła zasilania. Narzędzia używane do przeprowadzenia ataku, moduł jądra i prototypy exploitów są dostępne na GitHubie.

Dla chipów niektórych producentów, w których nie jest zablokowana możliwość przepisania SPD, przeprowadzenie ataku jest możliwe systematycznie bez fizycznego dostępu do serwera. Na przykład, możliwe jest programowe zmienienie parametrów modułów pamięci firmy Corsair z RGB. W przypadku całkowicie programowego ataku system może zostać skompromitowany, na przykład poprzez zastosowanie złośliwego aktualizacji BIOS lub przez dywersję ze strony administratorów. serwerów w chmurze.

Jako potwierdzenie działania metody zaprezentowano dwa ataki. W pierwszym ataku wykazano możliwość ponownego odtworzenia tekstu zaszyfrowanego — przy użyciu AMD SEV dane w pamięci są przechowywane w zaszyfrowanej formie, a napastnik nie jest w stanie określić zawartości, ale ma możliwość odczytania zaszyfrowanych danych i następnie wstawienia ich zamiast innej zaszyfrowanej zawartości.
W drugim ataku zaprezentowano możliwość obejścia mechanizmu uwierzytelniania SEV-SNP, który zapewnia kryptograficzne potwierdzenie integralności maszyny wirtualnej uruchomionej w zabezpieczonym środowisku. Napastnik może przechwycić raport uwierzytelnienia prawidłowej maszyny wirtualnej, a następnie wstawić go do skompromitowanej maszyny wirtualnej, na przykład ukrywając ślady wprowadzenia backdoora.
Problem dotyczy 3. i 4. generacji procesorów AMD z serii EPYC, sprzedawanych pod kodowymi nazwami Milan, Milan-X, Genoa, Bergamo, Genoa-X i Siena. W celu zablokowania luki, firma AMD już wydała aktualizację oprogramowania SEV, w której wprowadzono sprawdzenie ALIAS_CHECK, uniemożliwiające manipulowanie pamięcią, charakterystyczne dla omawianego ataku.
Proponowane przez firmę Intel technologie Scalable SGX i TDX nie są podatne na ataki, ponieważ potrzebne kontrole są obecne od początku. Klasyczna technologia Intel SGX, która w 2021 roku została uznana przez Intel za przestarzałą, jest częściowo podatna na atak (analogicznie do wcześniej znanego ataku MemBuster, intruz może analizować dostępy do zaszyfrowanej pamięci, co oznacza, że możliwe jest jedynie odczytywanie szyfrogramu, ale nie jego nadpisywanie). Testy rozszerzeń CCA (Confidential Compute Architecture) w procesorach firmy ARM nie zostały przeprowadzone.
Dodatkowo informuje się o jeszcze jednej luce związanej z AMD SEV-SNP. Luka została zidentyfikowana w rozwijanym przez AMD fork emulatora QEMU, przeznaczonym do uruchamiania maszyn wirtualnych z SEV-SNP. Problem pozwala administratorowi środowiska gospodarza uzyskać dostęp do root'a systemów gościnnych poprzez manipulacje tabelami ACPI. Luka jest spowodowana tym, że podczas uruchamiania systemu gościnnego przeprowadzane jest sprawdzenie integralności jądra Linux, początkowego dysku RAM i parametrów jądra, ale nie uwzględnia się tabel ACPI, przez które hipernadzorca może wstawić specjalnie sformatowany kod AML (ACPI Machine Language), przeznaczony do wykonania w środowisku gościnym. Twierdzi się, że problem nie jest specyficzny dla QEMU i występuje w każdym hipernadzorze i emulatorze, ponieważ jądro Linux ufa wszelkim danym ACPI otrzymanym od hipernadzorcy.


Źródło: opennet.ru
