Высокая стоимость высокопроизводительных GPU (обычно $8000 и более) означает, что они часто используются совместно несколькими десятками пользователей в облачных средах. Две новые атаки демонстрируют, как злоумышленник может получить полный root-доступ к хост-машине, выполняя новые атаки Rowhammer на высокопроизводительные видеокарты Nvidia.

Атаки эксплуатируют растущую уязвимость памяти к битовым сбоям (bit flips), при которых нули в памяти переходят в единицы и наоборот. В 2014 году исследователи впервые продемонстрировали, что повторный быстрый доступ (или «hammering») к оперативной памяти создает электрические помехи, вызывающие битовые сбои. Год спустя другая исследовательская группа показала, что, нацеливаясь на определённые строки DRAM, содержащие чувствительные данные, злоумышленник может использовать этот механизм для повышения привилегий непривилегированного пользователя до root или обхода защиты sandbox. Обе атаки нацеливались на DRAM поколения DDR3.

От CPU к GPU: десятилетний путь Rowhammer

За прошедшее десятилетие появились десятки новых атак Rowhammer, которые:

  • Нацеливаются на более широкий диапазон типов DRAM, таких как DDR3 с защитой коррекции ошибок и поколения DDR4, включая версии с Target Row Refresh и защитой ECC
  • Используют новые методы hammering, такие как Rowhammer feng shui и RowPress, которые сосредоточиваются на чрезвычайно малых областях памяти, содержащих чувствительные данные
  • Используют эти методы для проведения атак через локальные сети, взлома устройств Android, кражи 2048-битных ключей шифрования
  • В первый раз в прошлом году работают против GDDR DRAM, используемой в высокопроизводительных GPU Nvidia

Последнее достижение доказало восприимчивость GDDR к атакам Rowhammer, но результаты были скромными. Исследователи получили только восемь битовых сбоев — небольшую часть того, что возможно на CPU DRAM, и ущерб был ограничен ухудшением выходных данных нейронной сети, работающей на целевом GPU.

В четверг две независимо работающие исследовательские группы продемонстрировали атаки на две видеокарты поколения Ampere от Nvidia, которые выводят GPU rowhammering на новую территорию с потенциально гораздо более серьёзными последствиями: битовые сбои GDDR, которые дают злоумышленникам полный контроль над памятью CPU, результатом чего является полная компрометация хост-машины. Для успеха атаки требуется отключение управления памятью IOMMU, что является стандартной настройкой в BIOS.

«Наша работа показывает, что Rowhammer, хорошо изученный на CPU, является серьёзной угрозой и на GPU», — сказал Эндрю Квонг, соавтор одной из работ. «С нашей работой мы... показываем, как злоумышленник может вызвать битовые сбои на GPU, чтобы получить произвольный доступ на чтение/запись ко всей памяти CPU, что приводит к полной компрометации машины».

Встречайте: GDDRHammer и GeForge

Атака, продемонстрированная в статье, называется GDDRHammer, причём первые четыре буквы означают как «Graphics DDR», так и «Greatly Disturbing DRAM Rows». Она работает против RTX 6000 из поколения Ampere архитектуры Nvidia. Атака не работает против моделей RTX 6000 из более нового поколения Ada, потому что они используют более новую форму GDDR, которую исследователи не реверс-инжинировали.

Используя новые схемы hammering и технику, называемую memory massaging, GDDRHammer вызвал в среднем 129 битовых сбоев на банк памяти — 64-кратное увеличение по сравнению с упоминавшимся ранее GPUHammer из прошлого года. Более значительно, GDDRHammer может манипулировать распределителем памяти для нарушения изоляции таблиц страниц GPU — которые, как и таблицы страниц CPU, являются структурами данных, используемыми для хранения соответствий между виртуальными адресами и физическими адресами DRAM — и пользовательскими данными, хранящимися на GPU. В результате злоумышленник получает возможность как читать, так и писать в память GPU.

Квонг продолжил в электронном письме:

«То, что делает наша работа и что отличает нас от предыдущих атак, это то, что мы раскрываем, что Rowhammer на памяти GPU имеет такие же серьёзные последствия для безопасности, как Rowhammer на CPU, и что защита от Rowhammer на памяти CPU недостаточна, если она не принимает во внимание угрозу от Rowhammering памяти GPU. Большой объём работ существует как в теории, так и в широко развёрнутых, как на программном, так и на аппаратном уровне, защиты от Rowhammer на CPU. Однако мы показываем, что злоумышленник может обойти всю эту защиту, вместо этого используя Rowhammer на GPU и используя это для компрометации CPU. Таким образом, в дальнейшем решения Rowhammer должны учитывать как память CPU, так и GPU».

Вторая статья — «GeForge: Hammering GDDR Memory to Forge GPU Page Tables for Fun and Profit» — делает в основном то же самое, за исключением того, что вместо эксплуатации последней таблицы страниц, как это делает GDDRHammer, она манипулирует последней таблицей каталогов страниц. Ей удалось вызвать 1171 битовый сбой против RTX 3060 и 202 битовых сбоя против RTX 6000.

GeForge также использует новые схемы hammering и memory massaging для повреждения соответствий таблиц страниц GPU в памяти GDDR6, чтобы получить доступ на чтение и запись в пространство памяти GPU. Оттуда она получает такие же привилегии над памятью CPU хост-машины. Доказательство концепции GeForge против RTX 3060 завершается открытием окна root shell, позволяющего злоумышленнику выдавать команды, которые работают без ограничений на хост-машине. Исследователи сказали, что и GDDRHammer, и GeForge могут сделать то же самое против RTC 6000.

«Манипулируя трансляцией адресов GPU, мы запускаем атаки, которые нарушают конфиденциальность и целостность в контексте GPU», — написали авторы статьи GeForge (которая в настоящее время недоступна публично). «Более значительно, мы подделываем сопоставления системной апертуры в повреждённых таблицах страниц GPU для доступа к физической памяти хост-машины, позволяя повышение привилегий пользователя на root в Linux. Насколько нам известно, это первый эксплуатационный код GPUside Rowhammer, которой достигает повышения привилегий хост-машины».

Memory massaging: терапия для эксплуатации GPU

Драйвер GPU от Nvidia хранит таблицы страниц в зарезервированной области низкоуровневой памяти, где хранящиеся биты не могут быть повреждены Rowhammering. Чтобы обойти это проектное решение, и GDDRHammer, и GeForce направляют таблицы в области, которые не защищены от электрических помех. Для GDDRHammer massaging осуществляется путём использования Rowhammer для переворота битов, которые выделяют доступ к защищённой области.

«Поскольку эти таблицы страниц определяют, какая память доступна, злоумышленник может изменить запись таблицы страниц, чтобы дать себе произвольный доступ ко всей памяти GPU», — объяснил Квонг по электронной почте. «Кроме того, мы обнаружили, что злоумышленник может изменить таблицу страниц на GPU, чтобы она указывала на память на CPU, тем самым давая злоумышленнику возможность читать/писать всю память CPU, что, конечно, полностью компрометирует машину».

Тем временем Чжэнькай Чжан, соавтор статьи GeForge, описал процесс massaging следующим образом:

«Учитывая пункт назначения управления, мы сначала изолируем 2 МБ кадр страницы, содержащий его. Затем мы используем разреженный доступ UVM (unified virtual memory) для осушения пула выделения таблиц страниц по умолчанию драйвера и освобождения изолированного кадра в точно нужный момент, чтобы он стал новой областью выделения таблиц страниц драйвера. Далее мы осторожно продвигаем выделения так, чтобы запись каталога страниц попала на уязвимую подстраницу внутри этого кадра. Наконец, мы запускаем битовый сбой так, чтобы повреждённая запись каталога страниц перенаправляла его указатель в контролируемую злоумышленником память, где подделанная таблица страниц может быть заполнена созданными записями».

В электронном письме представитель Nvidia сказал, что пользователи, ищущие указания о том, уязвимы ли они и какие действия им следует предпринять, могут просмотреть страницу, опубликованную в июле в ответ на предыдущую атаку GPUHammer. Представитель не добавил дополнительных подробностей.

Итак, куда мы идём дальше?

Исследователи сказали, что обе видеокарты RTX 3060 и RTX 6000 уязвимы. Изменение стандартных значений BIOS для включения IOMMU закрывает уязвимость, сказали они. IOMMU, сокращение от input-output memory management unit, сопоставляет видимые устройством виртуальные адреса с физическими адресами на хост-памяти. Это может быть использовано, чтобы сделать определённые части памяти недоступными.

«В контексте нашей атаки IOMMU может просто ограничить GPU от доступа к чувствительным местам памяти на хост-машине», — объяснил Квонг. «Однако IOMMU по умолчанию отключен в BIOS для максимизации совместимости и потому, что включение IOMMU сопровождается штрафом производительности из-за затрат на трансляцию адресов».

Отдельная защита — это включение кодов коррекции ошибок (ECC) на GPU, что Nvidia позволяет делать с помощью команды командной строки. Как и IOMMU, включение ECC влечёт некоторые затраты производительности, потому что оно уменьшает общий объём доступной рабочей памяти. Кроме того, некоторые атаки Rowhammer могут преодолеть защиту ECC.

Пользователи GPU должны понимать, что единственные известные уязвимые для Rowhammer видеокарты — это RTX 3060 и RTX 6000 из поколения Ampere, которые были введены в 2020 году. Было бы неудивительно, если бы новые поколения видеокарт от Nvidia и других производителей были восприимчивы к тем же типам атак, но поскольку темпы академических исследований обычно отстают от более быстрых темпов выпуска продуктов, сейчас нет способа это узнать.

Облачные платформы высшего уровня обычно обеспечивают уровни безопасности, которые намного превосходят те, которые доступны по умолчанию на машинах для любителей и потребителей. Ещё один момент, который следует помнить: нет известных случаев активного использования атак Rowhammer в реальном мире.

Истинная ценность исследования заключается в том, чтобы предупредить производителей GPU и пользователей о том, что атаки Rowhammer на этих платформах могут потенциально коренным образом перевернуть безопасность. Дополнительная информация о GDDRHammer и GeForge доступна здесь.