Десять лет мы ковыряли Rowhammer на CPU-памяти - DDR3, DDR4, DDR5. Научились обходить TRR, ECC, ASLR. Научились переключать биты в page table entries и получать root через
mmap и /proc/pagemap. Но всё это время видеопамять GPU оставалась нетронутой: считалось, что GDDR-чипы работают в изолированном контексте и bit flip в видеопамяти - максимум деградация нейросети. Ну, сломали точность модели с 80% до 60% - кого это волнует?GDDRHammer, GeForge и GPUBreach - три атаки из препринтов 2025–2026 годов, которые (если результаты подтвердятся) превращают Rowhammer на GPU из академического курьёза в полноценный вектор эскалации привилегий. GPUBreach, по данным исследователей из University of Toronto, заявлен как работающий даже с включённым IOMMU - той самой защитой, которая до сих пор считалась надёжным барьером между GPU и хост-памятью. Независимая верификация этих результатов пока не проводилась - но сам факт заставляет напрячься.
Дальше я разберу заявленный kill chain каждой атаки на основе доступных описаний, покажу, что можно попробовать воспроизвести в лаборатории, и объясню, почему для пентестеров, работающих с облачными GPU-окружениями, это потенциально меняет модель угроз.
Что изменилось: от CPU Rowhammer к аппаратной атаке на память GPU
Rowhammer атака GPU стала возможной благодаря фундаментальному свойству DRAM: ячейки памяти расположены настолько плотно, что многократное обращение к одной строке создаёт электрические помехи в соседних строках. Конденсаторы теряют заряд, биты переключаются - 0 становится 1 и наоборот. Эффект впервые продемонстрировали в 2014 году на DDR3, и с тех пор исследователи и производители играют в кошки-мышки: одни находят новые паттерны хаммеринга, другие внедряют защиты вроде Target Row Refresh (TRR).По данным Ars Technica, за десять лет техника эволюционировала от простых bit flip в DDR3 до атак, способных обходить ECC, работать по сети, рутить Android-устройства и красть 2048-битные криптографические ключи. Но все эти атаки целились в оперативную память CPU.
GPUHammer 2025 года первым попробовал хаммерить GDDR6. Результат был скромный: bit flip, достаточные лишь для деградации нейросети. Ни эскалации привилегий, ни выхода за пределы GPU-контекста. По сути - proof of concept, что GDDR-чипы подвержены тому же физическому эффекту.
А дальше - три препринта 2025–2026 годов: 129 bit flip на банк (GDDRHammer), 1171 bit flip на RTX 3060 (GeForge) и обход IOMMU с получением root shell (GPUBreach). Оговорка: на момент написания статьи препринты GDDRHammer, GeForge и GPUBreach не обнаружены в открытых репозиториях (arXiv, IEEE Xplore, USENIX), и приведённые числа основаны на вторичных источниках. Но если результаты подтвердятся, разница не количественная, а качественная: атакующий выходит из GPU-контекста в память CPU.
GDDRHammer, GeForge и GPUBreach - три вектора эскалации привилегий GPU
Все три атаки эксплуатируют один физический эффект - bit flip в GDDR6. Но механизм превращения аппаратного сбоя в контролируемый примитив атаки у каждой свой.GDDRHammer: 129 bit flip на банк через DRAM Rowhammer exploit
GDDRHammer работает на NVIDIA RTX A6000 (Ampere). Исследователи разработали паттерны хаммеринга, специфичные для GDDR6, и технику memory massaging для перемещения GPU page table в уязвимые регионы памяти. 129 bit flip на банк - в 64 раза больше, чем GPUHammer годом ранее.Атака модифицирует таблицу страниц последнего уровня (Last Level Page Table, PT). Через искажённые записи атакующий перенаправляет виртуальные адреса GPU на физические адреса CPU-памяти, используя флаг APERTURE для маппинга через PCIe. Ограничение: GDDRHammer требует отключённого IOMMU. По данным исследователей, IOMMU отключён в BIOS по умолчанию на большинстве десктопных систем, но в серверных GPU-окружениях его обычно активируют.
GeForge: манипуляция каталогом страниц для GPU memory corruption attack
GeForge использует похожий подход, но атакует каталог страниц последнего уровня (Last Level Page Directory, PD0) вместо самой таблицы. Больше bit flip: 1171 на RTX 3060 и 202 на RTX 6000. PoC завершается открытием root shell на хосте.Отличие от GDDRHammer - в гранулярности: модификация каталога страниц позволяет перенаправить сразу целый блок виртуальных адресов, а не отдельные страницы. Атака надёжнее, но по-прежнему требует отключённого IOMMU.
GPUBreach: обход IOMMU через баги драйвера NVIDIA
А вот GPUBreach уязвимость - это уже другая история. По вторичным источникам, ссылающимся на исследование University of Toronto (предположительно принято к публикации на 47th IEEE Symposium on Security & Privacy, май 2026 - в proceedings IEEE S&P пока не подтверждено), GPUBreach работает даже с включённым IOMMU.Ключевая идея: вместо прямого маппинга GPU-адресов на CPU-память (что IOMMU запрещает), GPUBreach повреждает метаданные внутри буферов, к которым GPU уже имеет легитимный доступ. Затем атака эксплуатирует memory-safety баги в самом драйвере NVIDIA, который крутится с привилегиями ядра на CPU. Драйвер выполняет out-of-bounds записи под контролем атакующего - и IOMMU тут бессилен, потому что записи происходят на стороне CPU, а не GPU.
По данным Security Affairs (первоисточник верифицировать не удалось): «system-wide compromise up to a root shell, without disabling IOMMU, unlike contemporary works, making GPUBreach a more potent threat».
| Параметр | GDDRHammer | GeForge | GPUBreach |
|---|---|---|---|
| Целевая структура | Page Table (PT) | Page Directory (PD0) | Page Table + драйвер |
| Bit flip на RTX 3060 | Нет данных | 1171 | Да (число не опубликовано) |
| Bit flip на RTX A6000 (Ampere) | 129/банк | Да | |
| Требует отключённого IOMMU | Да | Да | Нет |
| CPU privilege escalation | Нет | Да | Да |
| Root shell | Нет | Да | Да |
\* Числа bit flip приведены по вторичным источникам; первоисточники не верифицированы.
Анатомия GPUBreach: как bit flip атака GPU превращается в root shell
Для пентестера мало знать «что» - нужно понимать «как». Разберём kill chain GPUBreach по шагам - от непривилегированного CUDA-ядра до root.
📚 Этот материал доступен участникам сообщества с рангом One Level или выше
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме
Практика: воспроизведение Rowhammer на GPU в лабораторной среде
Требования к окружению
Прежде чем лезть в эксперименты - разграничим, что реально сделать в лаборатории уже сейчас, а что остаётся на уровне исследовательского PoC без публичного кода.Для экспериментов с bit flip на GPU нужно:
- ОС: Linux (Ubuntu 22.04/24.04) с проприетарным драйвером NVIDIA
- GPU: карта на Ampere с GDDR6 - подтверждённо уязвимы RTX 3060 и RTX A6000. Ada Lovelace и новее не исследованы
- CUDA Toolkit: версия, совместимая с драйвером
- Права: пользователь с разрешением на запуск CUDA-ядер (стандартная конфигурация - ничего особенного)
- IOMMU: для GDDRHammer/GeForge - отключён в BIOS. Для GPUBreach - без разницы
Пошаговый процесс: от проверки железа до детекции bit flip
Полные PoC-эксплойты GDDRHammer, GeForge и GPUBreach не опубликованы. Но базовую проверку подверженности GDDR6 bit flip можно выполнить, адаптировав подход из GPUHammer 2025 года.Шаг 1. Определите модель GPU и тип памяти.
nvidia-smi -q покажет архитектуру и параметры. Нужна именно GDDR6 - для карт с GDDR6X (RTX 3080/3090), GDDR7 или HBM (A100, H100) публичных PoC с эскалацией привилегий нет. Эти типы памяти в рамках GPUHammer не тестировались, так что выводов об их уязвимости делать нельзя.Шаг 2. Проверьте состояние IOMMU:
dmesg | grep -i iommu. Если в выводе «IOMMU enabled» - GDDRHammer и GeForge не сработают, но GPUBreach-вектор остаётся.Шаг 3. CUDA-ядро для хаммеринга. Базовый паттерн - цикличное обращение к двум строкам GDDR6, физически соседствующим с целевой:
C:
__global__ void hammer_kernel(volatile uint32_t *row_a,
volatile uint32_t *row_b,
int iterations) {
for (int i = 0; i < iterations; i++) {
uint32_t val_a = row_a[threadIdx.x]; // долбим строку A
uint32_t val_b = row_b[threadIdx.x]; // долбим строку B
__threadfence(); // барьер - чтобы кеш не съел наши обращения
}
}
Шаг 4. Детекция bit flip. После хаммеринга считываем содержимое соседних строк и сравниваем с эталоном. Любое расхождение - bit flip. На CPU для трансляции виртуальных адресов в физические используется
/proc/self/pagemap (с Linux 4.0 PFN обнуляется для процессов без CAP_SYS_ADMIN); на GPU аналогичная трансляция требует реверса адресации GDDR6-банков.Шаг 5. От bit flip до эксплойта - тут нужен memory massaging и точная манипуляция аллокатором драйвера. Публичных инструментов для автоматизации на GPU пока нет. Это та часть, где заканчивается «попробовать в лабе» и начинается «писать диссертацию».
Обход Rowhammer mitigation: почему IOMMU и ECC не спасают
IOMMU: защита только от двух из трёх атак
Включение IOMMU в BIOS - первая рекомендация для защиты от hardware attack с эскалацией привилегий через GPU. IOMMU ограничивает доступ GPU к хост-памяти и действительно блокирует GDDRHammer и GeForge, которые полагаются на прямой маппинг GPU-адресов на физические адреса CPU через PCIe.Но GPUBreach обходит IOMMU, атакуя не через DMA-канал, а через memory-safety баги в драйвере NVIDIA. Драйвер - kernel-модуль на CPU, и его out-of-bounds записи IOMMU не контролирует. Тут ситуация как с замком на двери: IOMMU запирает окно (DMA), а атакующий заходит через дырку в стене (драйвер).
ECC: полумера с оговорками
Включение ECC черезnvidia-smi -e 1 (с перезагрузкой) позволяет корректировать одиночные bit flip и детектировать двойные. По данным SecurityWeek, исследователи GPUBreach прямо говорят: «ECC is not a foolproof mitigation against GPUBreach». Почему:- Если паттерн хаммеринга вызывает более двух bit flip в одном слове (что продемонстрировано на DDR4 и DDR5 для CPU), ECC не может их скорректировать и допускает silent data corruption
- ECC снижает доступный объём видеопамяти - на серверных GPU это терпимо, но влияет на производительность
- На потребительских GPU (GeForce серия) ECC вообще недоступен. Исследователи формулируют жёстко: «On desktop or laptop GPUs, where ECC is currently unavailable, there are no known mitigations to our knowledge»
Что остаётся
Полноценного патча от NVIDIA нет. Компания опубликовала security notice по GPUHammer 2025 года и, по данным SecurityWeek, «said it may update its previous Rowhammer security notice with information from the new research project». То есть пока - тишина.Что это значит для shared GPU-инфраструктуры
Стоимость высокопроизводительных GPU - от $8000 по данным Ars Technica - делает их разделение между десятками пользователей в облаке экономической необходимостью. И именно тут Rowhammer атака GPU становится практически значимой.Вектор: злоумышленник арендует GPU-ресурс у облачного провайдера, получает стандартные права на запуск CUDA-ядер - и этого хватает для инициации атаки. Физический доступ не нужен. Как указано в исследовании GPUBreach: «the attacker does need to have code execution privileges on the GPU - this can be any user with permissions to use the GPU».
Для пентестеров, работающих с облачными инфраструктурами, это добавляет конкретные чеки в модель угроз:
- Включён ли IOMMU на хостах с shared GPU
- Активирован ли ECC на серверных картах
- Как изолированы GPU-ресурсы: Multi-Instance GPU (MIG) на A100/H100 создаёт аппаратные перегородки, но карты Ampere без MIG делят всю память между пользователями
- Есть ли мониторинг аномальных паттернов обращений к GPU-памяти - массовые
cudaMalloc/cudaFreeмогут быть индикатором memory massaging
Вопрос к читателям
У кого в лаборатории есть RTX 3060 на Ampere с GDDR6 и возможность тестировать хаммеринг через CUDA? Интересен конкретный вопрос: при запуске базового hammer-ядра с__threadfence() и 10M итерациями на двух соседних строках - сколько bit flip вы видите на банк? GeForge заявляет 1171 на RTX 3060, но это с оптимизированными паттернами. Какой результат даёт «наивный» двусторонний хаммер без реверса адресации банков GDDR6? Скиньте вывод ECC-счётчиков через nvidia-smi -q -d ECC до и после теста - будет интересно сравнить.