Ученые из Калифорнийского университета в Дейвисе предложили использовать Rowhammer-атаку для создания уникальных «отпечатков пальцев» устройств, даже если это устройства одного производителя, с идентичными аппаратными и программными характеристиками. Созданную для этой цели атаку специалисты назвали Centauri.
Rowhammer
Оригинальную атаку Rowhammer еще в 2014 году придумали эксперты из университета Карнеги-Меллона. Ее суть сводилась к тому, что определенное воздействие на ячейки памяти может привести к тому, что электромагнитное излучение повлияет на соседние ячейки, и значения битов в них изменятся.
За прошедшие с тех пор годы исследователи успели доказать, что перед атаками Rowhammer может быть уязвима самая разная память, а также атаку научились эксплуатировать через JavaScript, успели приспособить ее для атак на Microsoft Edge и виртуальные машины Linux. Также существует вариация Rowhammer, представляющая опасность для устройств на Android, а эффективность атак научились повышать при помощи видеокарт.
В ответ на это производители внедрили в свои продукты Target Row Refresh (TRR) — комбинацию различных программных и аппаратных исправлений, созданных за прошедшие годы. В основном эти механизмы были эффективны и их хватало для защиты тогда еще новой памяти DDR4.
Однако представленная в 2021 году атака Blacksmith, основанная на фаззинге, доказала, что Rowhammer-атаки даже на современную память возможны и позволяют обойти защитные механизмы.
Обычно фингерпринтинг устройств включает в себя составление списка характеристик ПО и железа для конкретного девайса. Считается, что каждая из этих характеристик (например, разрешение экрана) представляет собой один бит энтропии. Имея достаточно битов энтропии, можно получить значение, которое, скорее всего, будет уникальным в рамках определенного набора и будет работать как уникальный идентификатор устройства.
Авторы Centauri пишут, что то же самое можно распространить и на память: проверка памяти с помощью атаки Rowhammer поможет выявить характеристики ОЗУ, которые затем можно использовать для фингерпринтинга железа. Исследователи подчеркивают, что при выполнении атак Rowhammer реакция ОЗУ и распределение битов, которые переворачиваются, будут уникальны для памяти каждого компьютера.
«Согласно нашему анализу, проверка Centauri на 98 модулях DIMM в шести наборах идентичных модулей DRAM от двух производителей показала, что [этот метод] может извлекать высокоэнтропийные и стабильные “отпечатки пальцев” с общей точностью 99,91%», — пишут исследователи.
При этом атака достигает точности 99,91% примерно за три минуты. Более быстрой фингерпринтинг так же возможен, но за счет некоторой потери точности. Так, Centauri может извлечь «отпечаток пальца» всего за 9,92 секунды, и при этом точность ухудшится всего на 0,64.
Ученые рассказывают, что преодолели ряд проблем, разрабатывая Centauri. В частности, им пришлось понять, как справляться с недетерминированными (непредсказуемыми) переворотами битов в различных участках памяти; с ограничениями на распределение памяти, чтобы обеспечить повторный доступ к одним и тем же участкам; как реализовать известные методы обхода TRR.
Стоит отметить, что в текущем виде Centauri предполагает запуск кода на компьютере пользователя, но исследователи считают, что в будущем атаку удастся адаптировать для работы в веб-приложении в браузере.
Одним из возможных применений такого фингерпринтинга исследователи считают обнаружение мошенничества, например, выявление ботов. То есть компьютер, который пытается притвориться несколькими машинами одновременно, будет обнаружен по уникальному отпечатку.
Однако эксперты признают, что применение Centauri сопряжено с определенными рисками для добропорядочных пользователей. Дело в том, что «Centauri может случайно вывести из строя устройство пользователя, перевернув бит, зарезервированный для ОС» (отмечается, что такие случаи редки), а также приводит к ускоренному изнашиванию модулей памяти, если используется постоянно.
Чтобы избежать подобных проблем, ученые предлагают поставщикам ОС гарантировать, что память, выделенная для операционной системы, физически не соседствует с памятью, зарезервированной для других приложений. А также использовать Centauri не постоянно, а только для «критических случаев».