Deweloperzy z zespołu Google Cloud rozszerzalność (CVE-2019-9836) w implementacji technologii AMD SEV (Secure Encrypted Virtualization), która pozwala na skompromitowanie danych chronionych przez tę technologię. AMD SEV na poziomie sprzętowym zapewnia przezroczyste szyfrowanie pamięci maszyn wirtualnych, w którym dostęp do odszyfrowanych danych ma tylko obecny system gościnny, a pozostałe maszyny wirtualne i hipernadzorca przy próbie dostępu do tej pamięci otrzymują zaszyfrowany zestaw danych.
Wykryty problem umożliwia całkowite przywrócenie zawartości zamkniętego klucza PDH, który jest przetwarzany na poziomie oddzielnego chronionego procesora PSP (AMD Security Processor), niedostępnego dla głównego systemu operacyjnego.
Mając klucz PDH, atakujący może następnie odtworzyć klucz sesyjny i tajną sekwencję zdefiniowaną podczas tworzenia maszyny wirtualnej oraz uzyskać dostęp do zaszyfrowanych danych.
Wrażliwość wynika z niedociągnięć w implementacji krzywych eliptycznych (ECC) stosowanych do szyfrowania, które umożliwiają przeprowadzenie na odzyskanie parametrów krzywej. W trakcie wykonywania polecenia uruchomienia chronionej maszyny wirtualnej, atakujący może wysłać parametry krzywej, które nie odpowiadają parametrom zalecanym przez NIST, co skutkuje używaniem wartości punktów małego rzędu w operacjach mnożenia z danymi klucza prywatnego.
Bezpieczeństwo protokołu ECDH bezpośrednio od generowanej początkowej punktu krzywej, którego dyskretne logarytmowanie stanowi bardzo trudne zadanie. Na jednym z etapów inicjalizacji środowiska AMD SEV w obliczeniach z kluczem prywatnym używane są parametry otrzymane od użytkownika. W rzeczywistości wykonywana jest operacja mnożenia dwóch punktów, z których jeden odpowiada kluczowi prywatnemu. Jeśli drugi punkt odnosi się do małych liczb pierwszych, atakujący może określić parametry pierwszego punktu (bity modułu używanego w operacji potęgowania modulo) poprzez przeszukiwanie wszystkich możliwych wartości. Aby określić klucz prywatny, dobrane fragmenty liczb pierwszych mogą być następnie scalane przy użyciu .
Problem dotyczy platform serwerowych AMD EPYC, które używają mikroprogramów SEV aż do wersji 0.17 build 11. Firma AMD już aktualizacja oprogramowania, która wprowadza blokadę użycia punktów niespełniających krzywej NIST. W związku z tym wcześniej wygenerowane certyfikaty dla kluczy PDH pozostają ważne, co pozwala napastnikowi przeprowadzić atak migracji maszyn wirtualnych z środowisk chronionych przed podatnością do środowisk narażonych na problem. Wspomniano również o możliwości przeprowadzenia ataku polegającego na powrocie do starszej, podatnej wersji oprogramowania, jednak ta możliwość nie została jeszcze potwierdzona.
Źródło: opennet.ru
