Plundervolt to nowa metoda ataku na procesory Intel, która wpływa na technologię SGX

Intel wydany aktualizacja mikrokodu, która naprawia słaby punkt (CVE-2019-14607) pozwalać poprzez manipulację mechanizmem dynamicznej kontroli napięcia i częstotliwości w procesorze, inicjować uszkodzenia zawartości komórek danych, w tym w obszarach wykorzystywanych do obliczeń w izolowanych enklawach Intel SGX. Atak nazywa się Plundervolt i potencjalnie pozwala lokalnemu użytkownikowi zwiększyć swoje uprawnienia w systemie, spowodować odmowę usługi i uzyskać dostęp do wrażliwych danych.

Atak jest niebezpieczny jedynie w kontekście manipulacji obliczeniami w enklawach SGX, ponieważ do jego przeprowadzenia wymagane są uprawnienia roota w systemie. W najprostszym przypadku atakujący może osiągnąć zniekształcenie informacji przetwarzanych w enklawie, jednak w bardziej skomplikowanych scenariuszach możliwość odtworzenia przechowywanych w enklawie kluczy prywatnych służących do szyfrowania przy użyciu algorytmów RSA-CRT i AES-NI nie jest możliwa. wyłączony. Technikę tę można również zastosować do generowania błędów w początkowo poprawnych algorytmach, aby wywołać podatności podczas pracy z pamięcią, na przykład w celu zorganizowania dostępu do obszaru poza granicami przydzielonego bufora.
Prototypowy kod do przeprowadzenia ataku opublikowany na GitHub

Istotą metody jest stworzenie warunków wystąpienia nieoczekiwanych uszkodzeń danych podczas obliczeń w SGX, przed którymi nie chroni stosowanie szyfrowania i uwierzytelniania pamięci w enklawie. Aby wprowadzić zniekształcenia, okazało się, że można zastosować standardowe interfejsy programowe do sterowania częstotliwością i napięciem, zwykle stosowane w celu zmniejszenia zużycia energii w czasie bezczynności systemu i aktywowania maksymalnej wydajności podczas intensywnej pracy. Charakterystyka częstotliwości i napięcia obejmuje cały układ, w tym wpływ obliczeń w izolowanej enklawie.

Zmieniając napięcie, można stworzyć warunki, w których ładunek nie wystarczy do zregenerowania komórki pamięci wewnątrz procesora i zmienia się jego wartość. Kluczowa różnica w stosunku do ataku Młot Wiosłowy polega na tym, że RowHammer umożliwia zmianę zawartości poszczególnych bitów w pamięci DRAM poprzez cykliczny odczyt danych z sąsiednich komórek, natomiast Plundervolt pozwala na zmianę bitów wewnątrz procesora, gdy dane zostały już załadowane z pamięci do obliczeń. Ta funkcja pozwala ominąć mechanizmy kontroli integralności i szyfrowania stosowane w SGX dla danych w pamięci, ponieważ wartości w pamięci pozostają prawidłowe, ale mogą zostać zniekształcone podczas operacji na nich, zanim wynik zostanie zapisany w pamięci.

Jeśli ta zmodyfikowana wartość zostanie użyta w procesie mnożenia w procesie szyfrowania, wynik zostanie odrzucony z nieprawidłowym tekstem zaszyfrowanym. Mając możliwość skontaktowania się z handlerem w SGX w celu zaszyfrowania jego danych, atakujący może, powodując awarie, zgromadzić statystyki dotyczące zmian w wyjściowym zaszyfrowanym tekście i w ciągu kilku minut przywrócić wartość klucza przechowywanego w enklawie. Znany jest oryginalny tekst wejściowy i poprawny wyjściowy szyfrogram, klucz się nie zmienia, a wynik nieprawidłowego tekstu zaszyfrowanego wskazuje, że jakiś bit został zniekształcony do wartości przeciwnej.

Po przeanalizowaniu par wartości poprawnych i uszkodzonych szyfrogramów zgromadzonych podczas różnych awarii, wykorzystując metody różnicowej analizy uszkodzeń (DFA, Analiza usterek różnicowych) Móc przewidywać prawdopodobnych kluczy używanych do szyfrowania symetrycznego AES, a następnie, analizując przecięcia kluczy w różnych zestawach, określ pożądany klucz.

Problem dotyczy różnych modeli procesorów Intel, w tym procesorów Intel Core z wersją 6
10. generacja, a także piąta i szósta generacja Xeon E3, pierwsza i druga generacja Intel Xeon Scalable, Xeon D,
Xeon W i Xeon E.

Przypomnijmy, że technologia SGX (Rozszerzenia ochrony oprogramowania) pojawił się w procesorach Intel Core szóstej generacji (Skylake) oraz oferuje szereg instrukcji umożliwiających aplikacjom na poziomie użytkownika przydzielanie zamkniętych obszarów pamięci - enklaw, których zawartości nie można odczytać ani zmodyfikować nawet przez jądro i kod działający w trybach ring0, SMM i VMM. Nie da się przekazać kontroli do kodu w enklawie za pomocą tradycyjnych funkcji skoków oraz manipulacji rejestrami i stosem; do przekazania kontroli do enklawy wykorzystywana jest specjalnie utworzona nowa instrukcja, która wykonuje kontrolę uprawnień. W tym przypadku kod umieszczony w enklawie może wykorzystywać klasyczne metody wywoływania, aby uzyskać dostęp do funkcji wewnątrz enklawy oraz specjalne instrukcje, aby wywoływać funkcje zewnętrzne. Szyfrowanie pamięci w enklawie służy do ochrony przed atakami sprzętowymi, takimi jak połączenie z modułem DRAM.

Źródło: opennet.ru

Dodaj komentarz