Группа исследователей из Швейцарской высшей технической школы Цюриха, Амстердамского свободного университета и компании Qualcomm опубликовали новый метод атаки класса RowHammer, позволяющий изменить содержимое отдельных битов динамической оперативной памяти (DRAM). Атаке присвоено кодовое имя Blacksmith и идентификатор CVE-2021-42114. Проблеме подвержены многие чипы DDR4, снабжённые защитой от ранее известных методов класса RowHammer. Инструментарий для тестирования своих систем на подверженность уязвимости опубликован на GitHub.
Напомним, что атаки класса RowHammer позволяют исказить содержимое отдельных битов памяти путём цикличного чтения данных из соседних ячеек памяти. Так как память DRAM представляет собой двухмерный массив ячеек, каждая из которых состоит из конденсатора и транзистора, выполнение непрерывного чтения одной и той же области памяти приводит к флуктуации напряжения и аномалиям, вызывающим небольшую потерю заряда соседних ячеек. Если интенсивность чтения большая, то соседняя ячейка может потерять достаточно большой объём заряда и очередной цикл регенерации не успеет восстановить её первоначальное состояние, что приведёт к изменению значения сохранённых в ячейке данных.
Для защиты от RowHammer производители чипов предложили механизм TRR (Target Row Refresh), который защищает от искажения ячеек в соседних строках, но так как защита основывалась на принципе “безопасность через неясность (security by obscurity), она не решала проблему в корне, а защищала лишь от известных частных случаев, что позволяло легко находить пути обхода защиты. Например, в мае компания Google предложила метод Half-Double, на который не действовала защита TRR, так как при атаке затрагивались ячейки, напрямую не прилегающие к целевой.
Новый метод Blacksmith предлагает иной способ обхода защиты TRR, основанный на неоднородном обращении с разной частотой к двум или более строкам-агрессорам для вызова утечки заряда. Для определения шаблона обращения к памяти, приводящего у течке заряда, разработан специальный fuzzer, автоматически подбирающий параметры атаки для конкретного чипа, варьируя порядок, интенсивность и систематичность обращения к ячейкам.
Подобный поход, не связанный с воздействием на одни и те же ячейки, делает неэффективным текущие методы защиты TRR, которые в том или ином виде сводятся к подсчёту числа повторяющихся обращений к ячейкам и при достижении определённых величин инициировании перезарядки соседних ячеек. В Blacksmith шаблон доступа размазывается сразу на несколько ячеек c разных сторон от целевой, что позволяет добиться утечки заряда не достигая пороговых величин.
Метод оказался значительно эффективнее ранее предложенных способов обхода TRR – исследователям удалось добиться искажения битов во всех из 40 недавно купленных разных чипов памяти DDR4 производства Samsung, Micron, SK Hynix и неизвестного производителя (на 4 чипах производитель не был указан). Для сравнения ранее предложенный теми же исследователями метод TRRespass оказался эффективен лишь для 13 из 42 протестированных в то время чипов.
В общем виде предполагается, что метод Blacksmith применим к 94% из всех DRAM-чипов, имеющихся на рынке, но по заявлению исследователей, некоторые чипы более уязвимы и проще для атаки, чем другие. Применение в чипах кодов коррекции ошибок (ECC) и удвоения частоты обновления памяти не обеспечивает полной защиты, но усложняет эксплуатацию. Примечательно, что проблема не может быть блокирована в уже выпущенных чипах и требует реализации новой защиты на аппаратном уровне, поэтому атака останется актуальной ещё многие годы.
В качестве практических примеров приведены методы применения Blacksmith для изменения содержимого записей в таблице страниц памяти (PTE, page table entry) для получения привилегии ядра, повреждения хранящегося в памяти открытого ключа RSA-2048 в OpenSSH (можно привести открытый ключ в чужой виртуальной машине к соответствию закрытому ключу атакующего для подключения к VM жертвы) и обхода проверки полномочий через модификацию памяти процесса sudo для получения полномочий root. В зависимости от чипа для изменения одного целевого бита требуется от 3 секунд до нескольких часов проведения атаки.
Дополнительно можно отметить публикацию открытого фреймворка LiteX Row Hammer Tester для проверки методов защиты памяти от атак класса RowHammer, разработанного компанией Antmicro по заказу Google. Фреймворк основан на использовании FPGA для полного управления командами, передаваемыми напрямую в чип DRAM для исключения влияния контроллера памяти. Для взаимодействия с FPGA предлагается инструментарий на языке Python. Шлюз за базе FPGA включает модуль для пакетной передачи данных (определяет шаблоны обращения к памяти), Payload Executor, контроллер на базе LiteDRAM (обрабатывает всю требуемую для DRAM логику, включая активацию строк и обновление памяти) и CPU VexRiscv. Наработки проекта распространяются под лицензией Apache 2.0. Поддерживается использование различных платформ FPGA, включая Lattice ECP5, Xilinx Series 6, 7, UltraScale и UltraScale+.