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

На прошлой неделе очередную концепцию атаки представили Дмитрий Евтюшкин и Дмитрий Пономарев из Государственного университета Нью-Йорка в соавторстве с Наилем Абу-Газале (Nael Abu-Ghazaleh) из Калифорнийского университета в Риверсайде. В статье «Jump Over ASLR: Attacking Branch Predictors to Bypass ASLR» («Преодоление ASLR: атака на алгоритм предсказания ветвления с целью обхода ASLR») исследователи рассмотрели исполненную на процессоре Haswell (Intel) атаку по стороннему каналу, позволяющую восстановить смещение ASLR в ядре Linux с помощью коллизий хэша в буфере адресов ветвлений (BTB). Этот буфер используется в большинстве процессоров для предсказания переходов.

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

«Наша атака основана на возможности создания коллизий в BTB между командами перехода процесса атакующего и процесса пользователя или ядра, — пишут университетские исследователи. — Эти коллизии, в свою очередь, могут повлиять на время срабатывания кода атакующего, что позволит ему идентифицировать местоположение известных команд перехода в адресном пространстве процесса жертвы или ядра».

В ходе PoC-атаки исследователи использовали два типа коллизий: между операциями перехода уровня пользователя и уровня ядра и между двумя операциями перехода уровня пользователя. Успешный обход ASLR был продемонстрирован, как уже говорилось, на Linux, установленной на Intel Haswell, и был произведен за 60 мс. Исследователи полагают, что аналогичная атака осуществима также на Windows и macOS.

В статье приведены рекомендации по противодействию подобным атакам, причем как программными, так и аппаратными средствами. К примеру, можно применить мелкомодульную ASLR-схему рандомизации кода, детализировав функции, блоки или команды; это повысит стоимость атаки для злоумышленников. Может также помочь изменение механизма адресации BTB таким образом, чтобы доступ к записям в этом буфере осуществлялся по полному виртуальному адресу.

Категории: Аналитика, Уязвимости