Luka w AMD SEV pozwalająca na ustalenie kluczy szyfrujących

Programiści z zespołu Google Cloud ujawnił luka (CVE-2019-9836) w implementacji technologii AMD SEV (Secure Encrypted Virtualization), która pozwala na naruszenie bezpieczeństwa danych chronionych tą technologią. AMD SEV na poziomie sprzętowym zapewnia przejrzyste szyfrowanie pamięci maszyny wirtualnej, w której tylko bieżący system gościa ma dostęp do odszyfrowanych danych, a inne maszyny wirtualne i hypervisor otrzymują zaszyfrowany zestaw danych przy próbie dostępu do tej pamięci.

Zidentyfikowany problem umożliwia całkowite przywrócenie zawartości klucza prywatnego PDH, który jest przetwarzany na poziomie oddzielnego chronionego procesora PSP (AMD Security Processor), który jest niedostępny dla głównego systemu operacyjnego.
Posiadając klucz PDH, atakujący może następnie odzyskać klucz sesji i tajną sekwencję określoną podczas tworzenia maszyny wirtualnej i uzyskać dostęp do zaszyfrowanych danych.

Luka wynika z błędów w implementacji szyfrowania krzywych eliptycznych (ECC), które na to pozwala atak aby przywrócić parametry krzywej. Podczas wykonywania polecenia uruchomienia chronionej maszyny wirtualnej osoba atakująca może wysłać parametry krzywej, które nie są zgodne z parametrami zalecanymi przez NIST, co skutkuje wykorzystaniem wartości punktowych niskiego rzędu w operacjach mnożenia z danymi klucza prywatnego.

Bezpieczeństwo protokołu ECDH bezpośrednio zależy od zamówienia wygenerowany punkt początkowy krzywej, której logarytm dyskretny jest zadaniem bardzo trudnym. Podczas jednego z etapów inicjalizacji środowiska AMD SEV obliczenia klucza prywatnego wykorzystują parametry otrzymane od użytkownika. Zasadniczo operacja polega na pomnożeniu dwóch punktów, z których jeden odpowiada kluczowi prywatnemu. Jeśli drugi punkt odnosi się do liczb pierwszych niskiego rzędu, atakujący może określić parametry pierwszego punktu (bity modułu użytego w operacji modulo), przeszukując wszystkie możliwe wartości. Aby określić klucz prywatny, wybrane fragmenty liczb pierwszych można następnie złożyć w całość za pomocą Chińskie twierdzenie o resztach.

Problem dotyczy platform serwerowych AMD EPYC korzystających z oprogramowania SEV do wersji 0.17 build 11. AMD już to zrobiło опубликовала Aktualizacja oprogramowania sprzętowego dodająca blokowanie punktów niezgodnych z krzywą NIST. Jednocześnie wygenerowane wcześniej certyfikaty dla kluczy PDH zachowują ważność, co umożliwia atakującemu przeprowadzenie ataku mającego na celu migrację maszyn wirtualnych ze środowisk chronionych przed podatnością do środowisk podatnych na problem. Wspomina się również o możliwości przeprowadzenia ataku mającego na celu przywrócenie wersji oprogramowania sprzętowego do starszej, podatnej na ataki wersji, jednak możliwość ta nie została jeszcze potwierdzona.

Źródło: opennet.ru

Dodaj komentarz