Эксплуатация уязвимости в DRAM-памяти через локальную сеть

Группа исследователей из Амстердамского и Кипрского университетов разработала метод атаки, позволяющий удалённо эксплуатировать уязвимость RowHammer в чипах памяти DRAM и добиться изменения содержимого отдельных битов в ОЗУ через манипуляцию с сетевыми пакетами, отправляемыми на целевую систему по локальной сети. Проблема RowHammer была выявлена в 2012 году, но до сих пор остаётся актуальной в виду трудности устранения уязвимости на аппаратном уровне. Вариант атаки с использованием сетевых адаптеров получил название «Throwhammer».

Целью исследования была демонстрация того, что уязвимость значительно опаснее, чем предполагалось, и уязвимые системы с высокоскоростным сетевым адаптером могут быть атакованы удалённо через отправку специально оформленного потока сетевых пакетов. Возможность применения метода продемонстрирована для организации выполнения кода в контексте работающего на удалённой системе сервера Memcached. Предложенный метод применим в высокоскоростных сетях с поддержкой удалённого прямого доступа к памяти (RDMA), которые получили распространение в облачных инфраструктурах и центрах обработки данных.

Несмотря на то, что практическая демонстрация метода воплощена в сети с поддержкой RDMA, исследователи не исключают, что возможна реализация атаки и без RDMA, так как сетевые адаптеры обеспечивают высокую интенсивность обращений к оперативной памяти, достаточную для проявления RowHammer. При этом, атака представляет больше теоретический интерес, чем реальную угрозу, так как требует выполнения достаточно большого набора условий и совпадения многих факторов, которые малодостижимы на реальных рабочих системах.

Для защиты от осуществления подобных атак без модификации приложений предложена реализация новой системы выделения буферов c изоляцией блоков в адресном пространстве DRAM. Суть метода защиты в добавления специальных защитных областей вокруг адресов, в которые обычно осуществляется запись в процессе кэширования и буферизации данных сетевой карты.

Напомним, что уязвимость RowHammer позволяет исказить содержимое отдельных битов памяти путём цикличного чтения данных из соседних ячеек памяти. Так как память DRAM представляет собой двухмерный массив ячеек, каждая из которых состоит из конденсатора и транзистора, выполнение непрерывного чтения одной и той же области памяти приводит к флуктуации напряжения и аномалиям, вызывающим небольшую потерю заряда соседних ячеек. Если интенсивность чтения достаточно большая, то ячейка может потерять достаточно большой объём заряда и очередной цикл регенерации не успеет восстановить его первоначальное состояние, что приведёт к изменению значения сохранённых в ячейке данных.

Вариант атаки по сети (Throwhammer) базируется на том, что сетевые карты достаточно активно кэшируют и сохраняют принимаемые данные в ОЗУ и скорости обработки пакетов в сетях с пропускной способностью 10 Gbps достаточно, чтобы создать нагрузку на память, необходимую для проявления уязвимости RowHammer. В ходе проведённого эксперимента искажение бита было достигнуто после генерации 560 тысяч обращений к памяти в течение 64 мс. Для создания такой активности достаточно отправки 9 млн пакетов в секунду, что вполне по силам любой современной сетевой карте с поддержкой RDMA.

Дополнительно можно отметить публикацию той же группой исследователей из Амстердамского университета усовершенствованного метода эксплуатации уязвимости RowHammer через web-браузер, получившего название GLitch. Если классический вариант атаки при помощи JavaScript в современных браузерах малоприменим из-за внесенных ограничений точности таймера, то новый метод обходит данные ограничения используя WebGL и GPU для формирования необходимой для проявления RowHammer активности.

Точности таймера, предоставляемого в WebGL, оказалось достаточно для определения разницы между прямым и прокэшированным обращением к DRAM, что позволяет использовать WebGL для организации атаки по сторонним каналам для определения непрерывных областей физической памяти. Далее, полученная информация о раскладке памяти используется для проведения целевой атаки RowHammer с использованием GPU. GPU задействован вместо CPU так как он представляет упрощённую систему кэширования, содержит кэш меньшего размера и снабжён более простыми механизмами защиты, которые легче обойти.

Атака с использованием GPU ограничивается устройствами в которых CPU и GPU совместно используют одну память, как правило, такое встречатется в смартфонах и планшетных ПК. В частности, демонстрация атаки GLitch подготовлена для Chrome и Firefox, запущенных на смартфоне Google Nexus 5 (прототип эксплоита действует для SoC Snapdragon 800/801) под управлением Android. Для проведения демонстрационной атаки потребовалось около 2 минут после открытия в браузере страницы с эксплоитом на JavaScript. Для защиты от использования WebGL для проведения таки в Chrome 65 и Firefox 60 отключено по умолчанию WebGL-расширение EXT_DISJOIN_TIMER_QUERY, позволявшее формировать запросы к таймеру в обход штатных средств JavaScript.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.