Badacze zabezpieczeń z firmy Google opublikowali informacje o podatności (CVE-2024-56161) w procesorach AMD, dotyczącej ładowarki mikro-kodu i umożliwiającej obejście mechanizmu weryfikacji sygnatur cyfrowych podczas aktualizacji mikro-kodu. Załadunek zmodyfikowanego mikro-kodu pozwala na skompromitowanie mechanizmu AMD SEV (Secure Encrypted Virtualization), stosowanego w systemach wirtualizacji w celu ochrony maszyn wirtualnych przed ingerencją ze strony hipernadzorcy lub administratora systemu gospodarza.
Podatność spowodowana jest użyciem niebezpiecznej funkcji haszującej w kodzie, który wykonuje weryfikację sygnatury cyfrowej po załadowaniu mikro-kodu do CPU. Aby przeprowadzić atak, konieczne jest posiadanie praw administratora w lokalnym systemie (możliwości wykonania kodu na poziomie zerowego pierścienia ochrony (ring0), będąc poza maszyną wirtualną).
W trakcie ataku można wniknąć w działanie systemów gościnnych, chronionych za pomocą rozszerzeń AMD SEV (Secure Encrypted Virtualization) oraz SEV-SNP (Secure Nested Paging), które zapewniają gwarancje integralności pamięci, maszyn wirtualnych, izolujących rejestry procesora i zapewniających bezpieczną pracę z zagnieżdżonymi tabelami stron pamięci. Mechanizm AMD SEV został stworzony, aby personel centrów danych i dostawców chmurowych nie mógł zmienić ani przeanalizować zawartości pamięci chronionych systemów gościnnych oraz zafałszować obliczeń.
Badacze przygotowali prototyp exploita, który umożliwia załadowanie dowolnego mikro-kodu do CPU, niepodpisanego cyfrowo. W celu zademonstrowania niebezpieczeństwa podatności zaproponowano aktualizację mikro-kodu, zmieniającą logikę działania instrukcji RDRAND, stosowanej jako jedno ze źródeł entropii w generatorach pseudolosowych, wykorzystywanych w procesie tworzenia kluczy, podczas wykonywania operacji kryptograficznych oraz do generowania losowych identyfikatorów.
Zmiana powoduje zwrócenie instrukcji RDRAND tylko liczby 4, zamiast losowej sekwencji. Aby zapobiec rzeczywistym atakom na systemy obliczeń poufnych, zmodyfikowany mikrokod zeruje flagę CF (carry flag), co oznacza, że wydawana wartość jest oznaczona jako błędna. Dodatkowe szczegóły i narzędzia do generowania zmodyfikowanego mikrokodu mają być opublikowane 5 marca, aby dać użytkownikom czas na zainstalowanie poprawki na swoich systemach. Udany przykład ataku został udokumentowany dla serwerów procesorów AMD EPYC 7B13 (Milan) i AMD Ryzen 9 7940HS (Phoenix).
W raporcie firmy AMD wskazano, że podatność występuje w procesorach AMD opartych na 1-4 pokoleniach mikroarchitektury Zen. Aktualizacja mikrokodu eliminująca lukę została wydana 13 grudnia 2024 roku dla procesorów serii AMD EPYC 7001, 7002 i 7003 (Naples, Rome, Milan i Milan-X), a 16 grudnia dla procesorów serii AMD EPYC 9004 (Genoa, Genoa-X i Bergamo/Siena). Aby usunąć podatność w systemach korzystających z atestacji SEV-SNP, wymagana jest dodatkowa aktualizacja firmware'u AMD SEV (dostarczana z aktualizacjami BIOS od producentów sprzętu).
Dodatkowo zgłaszana jest jeszcze jedna podatność w procesorach AMD, która umożliwia przeprowadzenie ataku kanałów bocznych w celu wydobycia informacji o obliczeniach w chronionych systemach gościnnych zabezpieczonych za pomocą mechanizmu AMD SEV. Problem dotyczy 1-4 generacji procesorów AMD EPYC i jest związany z możliwością wydobycia danych z pamięci podręcznej procesora, które osiadają podczas pracy chronionych systemów gościnnych. Do analizy zawartości pamięci podręcznej może być używana metoda Prime+Probe, polegająca na wypełnieniu pamięci podręcznej zestawem wzorcowych wartości i określeniu zmian poprzez pomiar czasu dostępu do nich podczas ponownego wypełnienia. Zaznacza się, że do blokowania ataku nadają się metody wcześniej proponowane w celu ochrony przed atakami klasy Spectre.
Źródło: opennet.ru
