Изследователи от Университета в Торонто представиха първата атака от клас Rowhammer, която се прилага за изкривяване на съдържанието на видеопамет. Демонстрирана е възможността за извършване на атака, водеща до замяна на до 8 бита данни, на дискретен GPU NVIDIA A6000 с видеопамет GDDR6. Като практичен пример е показано как подобно изкривяване може да се използва за вмешателство в изпълнението на модели за машинно обучение и значително (от 80% до 0.1%) намаляване на точността на предоставяните от тях резултати при промяна на стойността на само един бит.

Досега създаването на атаки от клас Rowhammer за видеопаметта беше затруднено поради сложността на определяне на физическото разположение на паметта в чиповете GDDR, големите закъснения при достъпа до паметта (4 пъти по-бавни) и по-високата честота на обновяване на паметта. Освен това, провеждането на изследвания беше затруднено от използването на патентовани механизми за защита от манипулации в чиповете GDDR, за анализа на които беше необходимо създаването на специални хардуерни тестови стендове на база FPGA.
За изучаване на видеопаметта изследователите разработиха нова техника за обратно инженерство на GDDR DRAM, а в самата атака бяха използвани технологии за оптимизация на достъпа до паметта, прилагани за организиране на паралелни изчисления, които бяха използвани като усилватели на интензивността при достъпа до отделни клетки. За провеждане на атаката на GPU NVIDIA беше използван нискоуровнев код CUDA.
В потребителския код CUDA не се извършва достъп по физически адреси на паметта, но в драйвера на NVIDIA виртуалната памет се отразяваше в една и съща физическа памет, което изследователите използваха за изчисляване на изместването на виртуалната памет и определяне на разположението на банките с памет. Разпознаването на достъпа до различни банки с памет беше направено чрез анализ на закъсненията, които се различаваха при достъп до една или до различни банки памет.
В системи, които съвместно използват GPU, като сървъри За изпълнение на модели за машинно обучение, атаката позволява на един потребител да променя съдържанието на видеопаметта с данни от друг потребител. Като мярка за защита, компанията NVIDIA препоръчва да се включат кодовете за корекция на грешки (ECC, Error Correction Codes) с команда «nvidia-smi -e 1» или да се използват серии видеокарти с поддръжка на OD-ECC (On-Die ECC), като GeForce RTX 50, RTX PRO, GB200, B200, B100, H100, H200, H20 и GH200.
Според изследователи, включването на ECC в системи с GPU A6000 води до намаляване на производителността при изпълнение на модели за машинно обучение с около 10% и намаляване на обема на паметта с 6.25%. Инструментариумът за провеждане на атака и извършване на обратно инженерство на ниско равнище разпределение на видеопаметта в системи с GPU NVIDIA е публикуван в GitHub.
Атаката RowHammer позволява изопачаване на съдържанието на отделни битове в DRAM паметта чрез циклично четене на данни от съседни клетки. Тъй като DRAM паметта представлява двумерен масив от клетки, всяка от които съдържа кондензатор и транзистор, непрекъснатото четене на една и съща област от паметта води до флуктуация на напрежението и аномалии, които причиняват малка загуба на заряд в съседните клетки. Ако интензивността на четенето е висока, то съседната клетка може да загуби значително количество заряд и следващият цикъл на регенерация няма да може да възстанови първоначалното ѝ състояние, което ще доведе до промяна на значението на данните, запазени в клетката.
Методът за атака Rowhammer беше предложен през 2014 година, след което между изследователи по киберсигурност и производители на хардуер започна игра в «котки и мишки» — производителите на паметови чипове се опитваха да блокират уязвимостта, а изследователите откриваха нови начини да се заобиколят. Например, за защита от RowHammer производителите на чипове добавиха механизма TRR (Target Row Refresh), но се оказа, че той блокира изкривяването на клетки само в определени случаи и не защитава от всички възможни вариации на атаката. Методи за атака бяха разработени за чипове DDR3, DDR4 и DDR5 в системи с процесори Intel, AMD и ARM. Също така бяха намерени начини за заобикаляне на корекция на грешки ECC и предложени варианти за извършване на атака през мрежа и чрез изпълнение на JavaScript код в браузър.
Източник: opennet.ru
