Badacze z kilku uniwersytetów w USA i Australii opracowali dwie ataki klasy Rowhammer – GDDRHammer i GeForge, które umożliwiają uzyskanie zakłócenia poszczególnych bitów w chipach pamięci wideo GDDR podczas wykonywania nieuprzywilejowanego jądra CUDA na GPU NVIDIA. W przeciwieństwie do metody GPUHammer zaprezentowanej w zeszłym roku, nowe ataki nie ograniczają się do wpływu na dane przetwarzane w pamięci GPU, ale umożliwiają pełny dostęp do całej pamięci głównej związanej z przestrzenią adresową CPU. Badacze zademonstrowali exploity, które zapewniają dostęp root do głównego systemu podczas wykonywania nieuprzywilejowanego jądra CUDA na GPU.
Oba ataki osiągają przedwczesną utratę ładunku w niektórych komórkach pamięci wideo, do których atakujący nie mają bezpośredniego dostępu, co prowadzi do zmiany bitów przechowywanych w tych komórkach. Możliwość odczytu i zapisu w pamięci związanej z przestrzenią adresową CPU realizowana jest poprzez ingerencję w działanie alokatora pamięci GPU (cudaMalloc), co narusza izolację pamięci GPU i mapuje wirtualne adresy GPU na dowolne fizyczne adresy pamięci GPU lub CPU.
Ingerencja odbywa się poprzez zakłócenie wartości bitów w pamięci wideo, w której przechowywane są tabele stron pamięci GPU odpowiedzialne za translację wirtualnych adresów na fizyczne. Różnice między atakami GDDRHammer i GeForge sprowadzają się do tego, że metoda GDDRHammer modyfikuje tabelę stron ostatniego poziomu (PT – Last Level Page Table), a metoda GeForge – katalog stron ostatniego poziomu (PD0 – Last Level Page Directory).
Wśród innych rzeczy, określone tabele translacji adresów są używane do organizacji bezpośredniego dostępu GPU do pamięci CPU, dlatego zmiana adresu w tabeli stron GPU na fizyczny adres w pamięci RAM umożliwia czytanie i zapisywanie danych w odniesieniu do głównej pamięci przez magistralę PCIe przy wyłączonym IOMMU (domyślnie wyłączone).


Udane ataki wykazano na wysokowydajnych profesjonalnych kartach graficznych NVIDIA RTX A6000 opartych na mikroarchitekturze Ampere (cena nowych kart zaczyna się od $6850, a używanych — od $4000) oraz na modelach konsumenckich NVIDIA RTX 3060 ($250-300). Opracowana technika omijania zabezpieczeń przed atakiem Rowhammer w połączeniu z wykorzystaniem dostępnych w GPU środków do równoległego wykonywania operacji pozwoliła zwiększyć częstotliwość występowania zniekształcenia komórek 64-krotnie w porównaniu do wcześniejszych ataków. Jako tymczasowy środek blokujący ataki, zespół może włączyć tryb korekcji błędów ECC (Error Correcting Codes) za pomocą polecenia „nvidia-smi -e 1”, ale wiąże się to z dodatkowymi kosztami i może zostać obejście przy użyciu metod ataku, takich jak ECCploit i ECC.fail.
Atak RowHammer pozwala na zniekształcenie zawartości pojedynczych bitów pamięci DRAM poprzez cykliczne odczytywanie danych z sąsiednich komórek pamięci. Ponieważ pamięć DRAM ma formę dwuwymiarowej tablicy komórek, z których każda składa się z kondensatora i tranzystora, wykonywanie ciągłego odczytu tej samej części pamięci prowadzi do fluktuacji napięcia i anomalii, które powodują niewielką stratę ładunku sąsiednich komórek. Jeśli intensywność odczytu jest wysoka, sąsiednia komórka może stracić wystarczającą ilość ładunku, a kolejny cykl regeneracji nie zdąży przywrócić jej pierwotnego stanu, co prowadzi do zmiany wartości przechowywanych w tej komórce danych.
Metoda ataku Rowhammer została zaproponowana w 2014 roku, po czym rozpoczęła się gra w „kotka i myszkę” między badaczami bezpieczeństwa a producentami sprzętu — producenci chipów pamięci próbowali zablokować lukę, a badacze znajdowali nowe sposoby jej omijania. Na przykład, w celu ochrony przed RowHammer, producenci chipów dodali mechanizm TRR (Target Row Refresh), ale okazało się, że blokuje on zniekształcenie komórek tylko w szczególnych przypadkach, nie chroniąc przed wszystkimi możliwymi wariantami ataku. Metody ataku zostały opracowane dla chipów DDR3, DDR4 i DDR5 w systemach z procesorami Intel, AMD i ARM, a także dla pamięci GDDR GPU NVIDIA. Ponadto znaleziono sposoby omijania korekcji błędów ECC i zaproponowano metody przeprowadzania ataków przez sieć oraz za pomocą wykonywania kodu JavaScript w przeglądarkach.
Źródło: opennet.ru
