Naukowcy z Uniwersytetu w Toronto przedstawili pierwszy atak klasy Rowhammer, który można zastosować do zniekształcenia zawartości pamięci wideo. Możliwość przeprowadzenia ataku, prowadzącego do podmiany do 8 bitów danych, została zademonstrowana na dyskretnym GPU NVIDIA A6000 z pamięcią wideo GDDR6. Jako praktyczny przykład pokazano, w jaki sposób można wykorzystać takie zniekształcenie do ingerencji w działanie modeli uczenia maszynowego, co prowadzi do znacznego (z 80% do 0.1%) obniżenia dokładności wyników, gdy zmienia się wartość zaledwie jednego bitu.

Do tej pory tworzenie ataków klasy Rowhammer na pamięć wideo było utrudnione z powodu trudności w określeniu fizycznego ułożenia pamięci w układach GDDR, dużych opóźnień podczas dostępu do pamięci (cztery razy wolniejszych) oraz wyższej częstotliwości odświeżania pamięci. Dodatkowo, utrudnieniem dla badań było wykorzystanie w układach GDDR własnościowych mechanizmów ochrony przed manipulacjami, prowadzącymi do przedwczesnej utraty ładunku, do analizy których wymagano stworzenia specjalnych testowych stanowisk sprzętowych opartych na FPGA.
Aby zbadać pamięć wideo, naukowcy opracowali nową technikę inżynierii wstecznej GDDR DRAM, a w samym ataku wykorzystano optymalizacje dostępu do pamięci stosowane w organizacji obliczeń równoległych, które były używane jako wzmacniacze intensywności dostępu do poszczególnych komórek. Do przeprowadzenia ataku na GPU NVIDIA użyto niskopoziomowego kodu CUDA.
W użytkowym kodzie CUDA nie wykonuje się dostępu do fizycznych adresów pamięci, jednak w sterowniku NVIDIA sprowadzono pamięć wirtualną do tej samej pamięci fizycznej, z czego skorzystali naukowcy do obliczenia przesunięcia pamięci wirtualnej i określenia układu banków pamięci. Rozpoznawanie dostępu do różnych banków pamięci przeprowadzono poprzez analizę opóźnień, które różniły się podczas dostępu do jednego lub różnych banków pamięci.
W systemach współdzielących GPU, takich jak serwery Aby umożliwić modele uczenia maszynowego, atak pozwala jednemu użytkownikowi zmienić zawartość pamięci wideo z danymi innego użytkownika. W celu ochrony firma NVIDIA zaleca włączenie kodów korekcji błędów (ECC, Error Correction Codes) za pomocą polecenia „nvidia-smi -e 1” lub korzystanie z serii kart graficznych z obsługą OD-ECC (On-Die ECC), takich jak GeForce RTX 50, RTX PRO, GB200, B200, B100, H100, H200, H20 i GH200.
Według badaczy włączenie ECC w systemach z GPU A6000 prowadzi do spadku wydajności w wykonywaniu modeli uczenia maszynowego o około 10% i zmniejszenia objętości pamięci o 6.25%. Narzędzie do przeprowadzenia ataku i realizacji inżynierii odwrotnej niskopoziomowego układu pamięci wideo w systemach z GPU NVIDIA zostało opublikowane na GitHub.
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 układów pamięci starali się zablokować lukę, a badacze znajdowali nowe sposoby jej obejścia. Na przykład, w celu ochrony przed RowHammer producenci układów dodali mechanizm TRR (Target Row Refresh), jednak okazało się, że blokuje on zniekształcenie komórek jedynie w specyficznych przypadkach, a nie chroni przed wszystkimi możliwymi wariantami ataku. Metody ataku zostały opracowane dla układów DDR3, DDR4 i DDR5 w systemach z procesorami Intel, AMD i ARM. Zidentyfikowano także sposoby obejścia korekcji błędów ECC i zaproponowano opcje przeprowadzenia ataku przez sieć oraz poprzez wykonanie kodu JavaScript w przeglądarce.
Źródło: opennet.ru
