Обнаружен простой JS-эксплойт, который обходит защиту ASLR процессоров 22 архитектур

Эксперты безопасности обнаружили в процессорах уязвимость, которая может сделать все меры защиты миллионов устройств от хакеров бессмысленными вне зависимости от операционной системы и запущенных приложений. Но самое главное — программно исправить её нельзя.

Уязвимость кроется в принципе работы блока управления памятью, элемента многих процессоров: он устроен таким образом, что позволяет обходить защиту Address Space Layout Randomization (ASLR).

Что такое ASLR?

ASLR — это критически важная система защиты, используемая во всех современных ОС: Windows, Linux, macOS, Android и BSD. Вкратце, ASLR — это механизм защиты памяти, который рандомизирует место исполнения программы в памяти. Это усложняет загрузку зловредов в конкретные места в памяти при эксплуатации переполнений или схожих багов.

Простыми словами — это всё равно, что грабить дом с закрытыми глазами. Но группа исследователей из Амстердамского свободного университета, известная как VUsec, разработала способ атаки, которые позволяет обойти защиту ASLR на процессорах популярных производителей (Intel, AMD, ARM, Allwinner, Nvidia и других) как минимум 22 различных архитектур.

Атака, названная ASLR Cache, или AnC, опасна ещё и тем, что для её исполнения нужен всего лишь простой JS-код. Он идентифицирует адреса памяти, в которых исполняются системные компоненты и приложения. Таким образом, попасть под удар можно, всего лишь посетив заражённый сайт. Вот пример атаки:

И как устроен этот эксплойт?

Уязвимость кроется в способе общения между микропроцессорами и памятью. Блок управления памятью, имеющийся во всех современных процессорах, ответственный за разметку памяти для программ, постоянно проверяет директорию, называемую таблицей страниц, чтобы следить за этой разметкой.

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

Таким образом, JS-код, запущенный в браузере после посещения заражённого сайта, тоже имеет доступ к кешу, что позволяет злоумышленникам получить информацию о расположении программных компонентов в виртуальной памяти. Используя эти данные, хакеры могут читать данные из различных участков памяти, что в сочетании с использованием более продвинутых эксплойтов может привести к получению полного контроля над системой.

Исследователи успешно провели атаки в последних версиях Chrome и Firefox на процессорах 22 различных архитектур, причём атака заняла всего лишь полторы минуты — несмотря на встроенную в браузеры ASLR-защиту. Команда VUsec опубликовала два доклада [1, 2], описывающих эту атаку, а также видео с демонстрацией атаки в браузере Firefox, установленном на 64-разрядную Linux-машину:

И что же делать?

Команда сообщила об уязвимости всем необходимым производителям и разработчикам — Intel, AMD, Samsung, Nvidia, Microsoft, Apple, Google и Mozilla — более трёх месяцев назад, но публичное заявление сделала лишь сегодня.

Единственным способом защититься от AnC-атак является включение таких плагинов, как NoScript в Firefox и ScriptSafe в Chrome. Они блокируют исполнение стороннего JS-кода в браузере.

Источник: The Hacker News