На конференции под названием 38C3, так получилось, было показано нечто довольно занятное – инструмент под названием FlippyRAM. В основном, это штука, чтобы, как бы это сказать, покопаться и разобраться, как работает такая интересная уязвимость памяти, которую обычно люди знают под названием Rowhammer. К слову, программа, видимо, состоит из кусочков на C++, да еще и с открытым исходным кодом, который, можно сказать, валяется в общем доступе – MIT лицензия и все такое. Для тех, кто хочет попробовать это дело, есть живые образы, весящие что-то около одного гига, которые реально можно воткнуть в USB-шку. Еще, кстати, есть какие-то целые инструкции под Docker, если кто шарит.
FlippyRAM и нестабильность Rowhammer
По сути, FlippyRAM дает людям возможность разобраться, как вообще работает годами обсуждаемая тема атак через Rowhammer. Ну как тема – это не просто обсуждение, тут можно покопаться, посмотреть, может, даже понять, как оно влияет на устройства в реальной жизни. Между прочим, можно еще и протестировать всякие там железяки, чтобы глянуть, что с ними будет, когда они столкнутся с этой штукой.
Rowhammer – что это за забавная штука
Итак, начнем с того, что Rowhammer – это, скажем, не первый день на нашем горизонте. Ему же больше десяти лет, как-никак. За это время, надо признать, внимание такой вещи уделено было отдельное – оно и понятно. Этот подход к изменениям в памяти позволил переворачивать данные без традиционных методов по ломанию защиты. Иногда его даже называют что-то вроде «бит-флиппинг», ну потому что он берет и меняет значения ячеек одним своим присутствием. Весело, да?
Вообще, такая первичная шумиха поднялась на памяти DDR3, начав с Intel x86 систем. А потом оказалось, что это немного, вернее, совсем не ушло и всплыло снова, уже на DDR4 и DDR5 – такие новые версии, которые типа «должны быть более защищенными». Впрочем, устройства на AMD или ARM тоже ловят эту «радость». И даже защитные фишки, как, например, коррекция ошибок ECC, похоже, мало что могут сделать. Ведь атаки можно провернуть не только через ОС, но и более изощренным образом – с помощью JavaScript. Вот это, скажем так, уже интересно.
Механика Rowhammer – чуть-чуть об этом
Если говорить просто, Rowhammer – это скорее такой эффект от больших нагрузок на строчку памяти в модулях DRAM, где одно обращение начинает, ну, слегка нервировать соседние строки. Это приводит к тому, что содержимое этих строк может начинать «плыть» или как-то меняться. И, ну знаете, такой вот «плывущий» эффект способен повлиять на систему так, что любые данные превращаются не пойми во что.
Так вот, чтобы снизить такие фокусы, парни создали TRR. Расшифровывается как «обновление строк, на которые много дергают». Да, иногда это помогает. Но не всегда, честно говоря. Некоторые атаки все равно находят свой уголок, поэтому вопрос безопасности современных память-картинок остается, скажем, довольно проблемным.
Ко всему этому добавим, что защита, связанная с этими вещами, мягко говоря, задача та еще. Но, по крайней мере, специалисты, исследующие такие «активности», могут найти что-то новое, чтобы помочь не только пользователям, но и инженерам, пытающимся закрыть «ячейки неведомого».