GPUHammer – вариант атаки Rowhammer на память GPU

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


До сих пор создание атак класса Rowhammer для видеопамяти было затруднено из-за сложности определения физической раскладки памяти в
чипах GDDR, больших задержек при доступе к памяти (в 4 раза медленнее) и более высокой частоты обновления памяти. Кроме того, проведению исследований мешало задействование в чипах GDDR проприетарных механизмов защиты от манипуляций, приводящих к преждевременной потере заряда, для анализа которых требовалось создание специальных аппаратных тестовых стендов на базе FPGA.

Для атаки GPUHammer исследователями была создана новая техника обратного инжиниринга 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-кода в браузере.

Release. Ссылка here.