Два коллектива учёных, работая независимо, создали методы атаки GDDRHammer и GeForge — способы манипуляции данными в памяти графических ускорителей. Эта уязвимость даёт гипотетическому атакующему неограниченный доступ к системным ресурсам, включая возможность повышения привилегий пользователя.
Источник изображений: gddr.fail
В 2014 году специалисты впервые показали метод атаки Rowhammer: частый и быстрый доступ к оперативной памяти порождает электрические помехи, позволяющие менять значения битов — превращать нули в единицы и наоборот. Год спустя другая команда исследователей доказала, что целенаправленное воздействие на определённые строки DRAM, где хранятся секретные данные, способно обойти защиту изолированных сред и расширить привилегии пользователей с ограниченными правами — тогда обе атаки действовали на памяти DDR3. Метод Rowhammer продолжал эволюционировать, и в прошлом году его приспособили для памяти видеокарт (GDDR). На начальной стадии учёные изменили всего восемь битов памяти, что привело лишь к заметному ухудшению качества работы модели искусственного интеллекта.
На днях две независимые группы исследователей представили два варианта атак на видеокарты Nvidia поколения Ampere — путём переключения битов GDDR они добились полного контроля над памятью центрального процессора и полной компрометации целевого устройства. Для успешного проведения атаки необходимо, чтобы управление памятью IOMMU было отключено, что является стандартной настройкой BIOS по умолчанию.
Атака первой группы учёных получила название GDDRHammer и работает на профессиональных видеокартах Nvidia RTX 6000 на архитектуре Ampere, но не на более новой Ada, где используется иная GDDR, которую исследователи пока не подвергли обратному проектированию. Метод GDDRHammer позволил учёным добиться в среднем 129 переключений битов на каждый банк памяти и открыл возможность влиять на распределение памяти, нарушая изоляцию таблиц страниц — структур данных, отвечающих за соответствие виртуальных и физических адресов DRAM. В результате гипотетический злоумышленник получает возможность как считывать данные из памяти видеокарты, так и записывать в неё. Учёные отмечают, что стандартных методов защиты от атак класса Rowhammer уже недостаточно, поскольку они не учитывают особенности работы с памятью на графическом ускорителе.
Метод атаки GeForge, разработанный иной командой исследователей, воздействует не на таблицы, содержащие адреса страниц памяти, а на более высокий уровень — каталог, указывающий местоположение этих страниц. Применяя данную технику, специалисты изменили значения 1171 бита на видеокарте Nvidia GeForce RTX 3060 и 202 бита — на RTX 6000. Вместо корректировки отдельных записей в таблицах, манипулируя данными каталога таблиц памяти, они получили возможность изменять целые блоки адресации, что расширяет потенциал для злоупотреблений. Представленный авторами эксплойт GeForge в итоге открывает терминал командной строки с правами root, предоставляя неограниченные привилегии на хост-машине. Аналогичный результат, по их утверждению, достижим и на RTX 6000.
Драйвер видеокарт Nvidia хранит таблицы страниц памяти в специально зарезервированной области, недоступной для атак типа Rowhammer. Чтобы преодолеть эту защиту, эксплойты GDDRHammer и GeForge переносят эти данные в уязвимые зоны. В случае GDDRHammer воздействие направлено на биты, контролирующие доступ к защищённой области: эти таблицы определяют, какие участки памяти доступны, и их изменение открывает произвольный доступ ко всей памяти видеокарты. Более того, можно модифицировать таблицы на видеокартах так, чтобы они указывали на страницы в основной памяти центрального процессора. В результате злоумышленник получает возможность читать и записывать всю системную память, что ведёт к полной компрометации машины.
В случае GeForge изолируется и захватывается участок памяти размером 2 Мбайт. Затем выполняются редкие обращения к унифицированной виртуальной памяти (UVM), что истощает ресурс выделения памяти, заданный драйвером по умолчанию. В нужный момент изолированный блок освобождается, вынуждая драйвер выделять память именно в этом фрагменте. В итоге требуемая запись оказывается на нужной подстранице блока, где можно подменять значения битов.
Для защиты от этих атак необходимо активировать в BIOS функцию IOMMU (Input-Output Memory Management Unit), которая сопоставляет виртуальные адреса, видимые машине, с физическими адресами в памяти хоста — это позволяет сделать определённые фрагменты памяти недоступными. Однако по умолчанию эта функция отключена из соображений совместимости и из-за снижения производительности системы. Другой вариант — включить коды коррекции ошибок (ECC) через командную строку, но это также может снизить производительность и быть обойдено с помощью эффекта Rowhammer.
На данный момент учёные подтвердили возможность атак на видеокарты Nvidia GeForce RTX 3060 и RTX 6000 поколения Ampere 2020 года. Однако это не исключает вероятности аналогичного взлома видеокарт других поколений и производителей. Стоит также отметить, что случаев эксплуатации Rowhammer в реальных условиях пока не зафиксировано.