Исследователи из Швейцарской высшей технической школы Цюриха разработали метод атаки ZenHammer, представляющий собой вариант атак класса RowHammer для изменения содержимого отдельных битов динамической оперативной памяти (DRAM), адаптированный для использования на платформах с процессорами AMD. Прошлые методы атак класса RowHammer ограничивались системами на базе процессоров Intel, но проведённое исследование показало, что искажения ячеек памяти также можно добиться на платформах с контроллерами памяти от компании AMD.
Работа метода продемонстрирована на системах AMD Zen 2 и Zen 3 с памятью DDR4 от трёх ведущих производителей (Samsung, Micron и SK Hynix). Атака успешно позволяет обойти реализуемый в чипах памяти механизм TRR (Target Row Refresh), нацеленный на защиту от искажения ячеек памяти в соседних строках. По оценке исследователей системы на базе CPU AMD Zen 3 более уязвимы, чем системы с процессорами Intel Coffee Lake, и их проще и эффективнее атаковать. Исследователями также проанализирована возможность совершения атаки на системы AMD Zen 4 с памятью DDR5, но разработанный для DDR4 метод атаки удалось успешно воспроизвести лишь на 1 из 10 протестированных чипов памяти DDR5, при этом сама возможность атаки не исключается, но требует разработки более эффективных шаблонов чтения, подходящих для устройств DDR5.
Для работы с чипами AMD удалось адаптировать ранее разработанные эксплоиты, меняющие содержимое записей в таблице страниц памяти (PTE, page table entry) для получения привилегии ядра, обходящие проверку пароля/полномочий через модификацию памяти процесса sudo и повреждающие хранящийся в памяти открытый ключ RSA-2048 в OpenSSH для воссоздания закрытого ключа. Атаку на страницы памяти удалось воспроизвести на 7 из 10 протестированных чипов DDR4, атаку на ключ RSA – на 6 чипах, а атаку на sudo – на 4 чипах, при этом время атаки составило 164, 267 и 209 секунд, соответственно.
Метод также может быть применим для атаки на систему через браузеры, для внесения изменений из виртуальных машин или даже для организации атаки по сети. На GitHub под лицензией MIT размещён исходных код инструментария DARE для обратного инжиниринга раскладки адресов в памяти DRAM, а также два набора утилит для fuzzing-тестирования искажения битов в памяти – (ddr4_zen2_zen3_pub для чипов DDR4 (Zen 2 and Zen 3) и ddr5_zen4_pub для чипов DDR5 (Zen 4), которые могут использоваться для проверки своих систем на подверженность атаке.
Для искажения битов применяется метод атаки класса RowHammer, который основывается на том, что в памяти DRAM, которая представляет собой двухмерный массив ячеек, состоящих из конденсатора и транзистора, выполнение непрерывного чтения одной и той же области памяти приводит к флуктуации напряжения и аномалиям, вызывающим небольшую потерю заряда соседних ячеек. Если интенсивность чтения большая, то соседняя ячейка может потерять достаточно большой объём заряда и очередной цикл регенерации не успеет восстановить её первоначальное состояние, что приведёт к изменению значения сохранённых в ячейке данных. В ходе исследователя выявлены особенности применяемых в процессорах AMD механизмов маппинга физической памяти и синхронизации с обновлением памяти, позволившие воссоздать низкоуровневую адресацию DRAM, определить адреса соседних ячеек, разработать методы обхода кэширования, вычислить шаблоны и частоту операций, приводящих к потере заряда.
Для защиты от RowHammer производители чипов добавили механизм TRR (Target Row Refresh), который блокирует искажение ячеек в частных случаях, но не защищает от всех возможных вариантов атаки. Наиболее эффективным методом защиты остаётся использование памяти с кодами коррекции ошибок (ECC), которые существенно усложняют, но полностью не исключают проведение атак класса RowHammer. Снизить вероятность успешной атаки также позволяет увеличение частоты регенерации памяти.
Компания AMD опубликовала отчёт о проблеме, в котором говорится, что в процессорах AMD используются контроллеры памяти, соответствующие спецификациям DDR, и так как успешность атаки зависит в основном от настроек системы и DRAM-памяти, с вопросами о устранении проблемы следует обращаться к производителям памяти и систем. В качестве существующих способа усложнения совершения атак класса Rowhammer упоминается использование ECC-памяти, повышение частоты регенерации памяти, отключение режима отложенной регенерации и использование процессоров с контроллерами, поддерживающими режим MAC
(Maximum Activate Count) для DDR4 (1, 2 и 3 поколение AMD EPYC (Naple, Rome и Milan)) и RFM (Refresh Management) для DDR5 (4 поколение AMD EPYC).