Команда исследователей из Амстердамского свободного университета представила миру JavaScript-атаку, которая способна «пробить» ASLR-защиту и представляет опасность для разных микропроцессорных архитектур, в том числе таких производителей, как Intel, AMD, ARM, Allwinner и Nvidia. Атака, как теперь принято, получила собственное имя: ASLR⊕Cache или AnC.
ASLR (Address Space Layout Randomization или рандомизация размещения адресного пространства) – это защитный механизм, поддерживаемый практически всеми современными операционными системами, включая Windows, Linux, macOS, iOS и Android. По сути, ASLR случайным образом изменяет расположение в адресном пространстве различных важных структур данных: образов исполняемых файлов, подгружаемых библиотек, хипа и так далее. Зачастую, для успешной реализации атаки, злоумышленнику необходимо знать, где именно в адресном пространстве происходит выполнение кода того или иного приложения, а ASLR призван защитить систему от таких атак.
Методика, созданная специалистами Амстердамского свободного университета, концентрируется вокруг блока управления памятью (memory management unit, MMU) который отвечает за управление доступом к памяти, запрашиваемым ЦП. По сути, задачи MMU заключаются в управлении виртуальной памятью (трансляции адресов виртуальной памяти в адреса физической памяти), защите памяти, управлении кеш-памятью, арбитражем шины, а также переключением блоков памяти в ряде архитектур.
Исследователи обнаружили, что компонент MMU, отвечающий за управление кешем, делит кеш с рядом недоверенных приложений, в том числе, с браузерами. Это означает, что нацелить на пространство совместно используемой памяти можно даже JavaScript-код, размещенный на специально подготовленной веб-странице, и при этом добиться успеха. В результате атакующий сможет определить, где в виртуальной памяти расположены нужные ему данные, а потом, вооружившись этим знанием, продолжить атаку.
«Мы разработали side-channel атаку, кеш-атаку на EVICT+TIME, которая может определить, какие страницы в таблице страниц была задействованы в ходе обращения MMU», — пишут специалисты.
Исследователи утверждают, что AnC-атака достаточно универсальна, в частности, она будет работать как с Chrome, так и с Firefox. Более того, AnC-атаки могут быть использованы для «возвращения к жизни» других кеш-атак, хотя уязвимости, лежащие в их основе, казалось бы, давно устранены. Исследователи полагают, что защититься от подобных неприятностей могут лишь сами пользователи. Для этого достаточно установить специальное расширение, вроде NoScript, которое запретит выполнение недоверенного JavaScript-кода в браузере.
Ниже представлен список процессоров и архитектур, которые были протестированы исследователями и признаны уязвимыми для AnC-атак.
Процессор | Архитектура | Год |
Intel Xeon E3-1240 v5 | Skylake | 2015 |
Intel Core i7-6700K | Skylake | 2015 |
Intel Celeron N2840 | Silvermont | 2014 |
Intel Xeon E5-2658 v2 | Ivy Bridge EP | 2013 |
Intel Atom C2750 | Silvermont | 2013 |
Intel Core i7-4500U | Haswell | 2013 |
Intel Core i7-3632QM | Ivy Bridge | 2012 |
Intel Core i7-2620QM | Sandy Bridge | 2011 |
Intel Core i5 M480 | Westmere | 2010 |
Intel Core i7 920 | Nehalem | 2008 |
AMD FX-8350 8-Core | Piledriver | 2012 |
AMD FX-8320 8-Core | Piledriver | 2012 |
AMD FX-8120 8-Core | Bulldozer | 2011 |
AMD Athlon II 640 X4 | K10 | 2010 |
AMD E-350 | Bobcat | 2010 |
AMD Phenom 9550 4-Core | K10 | 2008 |
Allwinner A64 | ARM Cortex A53 | 2016 |
Samsung Exynos 5800 | ARM Cortex A15 | 2014 |
Samsung Exynos 5800 | ARM Cortex A7 | 2014 |
Nvidia Tegra K1 CD580M-A1 | ARM Cortex A15 | 2014 |
Nvidia Tegra K1 CD570M-A1 | ARM Cortex A15; LPAE | 2014 |
Более подробно о ASLR⊕Cache можно почитать в двух представленных группой отчетах: здесь и здесь (PDF). Кроме того, ниже можно увидеть демонстрацию атаки на видео. Первый ролик показывает атаку, реализованную из-под Firefox на 64-битой Linux-машине. Второй ролик демонстрирует более быстрый вариант AnC.