Рандомизация адресного пространства (Address Space Layout Randomization, сокращенно ASLR) — это механизм обеспечения безопасности, встроенный в популярные операционные системы. Его суть сводится к рандомизации виртуальных адресов памяти различных структур данных — расположение в памяти целевой структуры сложно предугадать, поэтому шансы на успешную атаку значительно снижаются. Ранее в нашем блоге мы рассказывали об устройстве ASLR на примере ОС Windows 8.

В середине октября 2016 года группа американских исследователей информационной безопасности из Калифорнийского (Риверсайд) и Нью-Йоркского (Бинхемптон) университетов опубликовала описание техники атаки, которая использует для обхода ASLR ошибку в процессорах Intel.

Исследователям удалось обнаружить ошибку в работе части процессора Haswell, которая называется предиктор — используя ее разработанное ими приложение смогло предсказывать расположения в памяти, в которые другие программы будут загружать данные.

Предиктор содержит таблицу «буфер целевой ветви» (branch target buffer), в которой хранятся расположение в памяти (так называемые адреса) ветвей. Современные процессоры используют предиктор ветвей для ускорения операций с памятью — это достигается за счет того, что система может «предсказывать» адреса, где находятся инструкции, которые скоро будут исполнены. Для облегчения процесса «предсказания» в буферах также хранятся адреса ранее использованных ветвей. Техника атаки использует коллизию в таблице целевых буферов — с ее помощью можно узнать участки памяти, где находятся конкретные куски кода.

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

По мнению исследователей, их метод позволяет одинаково успешно обходить механизмы ASLR, реализованные как в Microsoft Windows так и в OS X от Apple. В настоящий момент продолжаются эксперименты с целью выяснить, работает ли новая техника обхода ASLR на процессорах других архитектур.

Исследователи представили разработанную ими технику обхода ASLR на конференции IEEE/ACM International Symposium on Microarchitecture, прошедшей в городе Тайбэй (Тайвань) — они продемонстрировали ее на компьютере c процессором Haswell, работающем под управлением последней версии Linux.

Представители Intel заявили, что они изучают факты, представленные в исследовании.
Поделиться с друзьями
-->

Комментарии (7)


  1. Regis
    28.10.2016 16:27

    Современные процессоры используют предиктор ветвей для ускорения операций с помощью — это достигается за счет того, что система может «предсказывать» адреса, где находятся инструкции, которые скоро будут исполнены.
    А что за «операции с помощью»?


    1. IGHOR
      28.10.2016 16:53

      Очевидно это опечатка и должно быть «операции с памятью».
      Именно так я и прочитал, даже не заметил ошибку.
      На хабре принято о таком сообщать в ЛС а не занимать место лишним комментарием.


      1. Revertis
        28.10.2016 17:13
        -6

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


        1. ptsecurity
          28.10.2016 19:00
          +2

          Это опечатка, которая может быть у всех, даже у тех, кто перечитывает материалы (а мы это всегда делаем). В любом случае, спасибо за внимательность


          1. Frankenstine
            30.10.2016 00:15

            Уж не знаю как вы там вычитываете, учитывая «угадать расположение в памяти целевой структуры сложно предугадать»


  1. jobgemws
    28.10.2016 19:00
    +1

    Весьма интересная статья, но хотелось бы по возможности, чтобы были примеры-какие конкретно операции и т д., а не общими фразами.


  1. dark1ight
    28.10.2016 21:20
    +9

    Собственно, в статье по ссылке авторов не говорится про ошибку в процессорах Intel.
    Указывается, что найдена возможность выполняя специально подготовленный код и измеряя время исполнения атакуемого кода, восстановить карту памяти. Для атаки используется тот факт, что современный суперскалярный процессор использует механизм предсказания переходов (BTB — буфер адресов переходов). И, зная принципы его работы, можно привести BTB в заранее заданное состояние. Это не приведёт к ошибке работы атакуемой программы, но изменит время её исполнения(увеличит). Что, в свою очередь, позволяет восстановить физический адрес памяти атакуемого процесса исходя из принципа рандомизации страничного адреса ASLR.
    И да, предсказание переходов используется не для ускорения операций с памятью, а для формирования адреса следующей инструкции при ветвлении по неизвестному адресу, для минимизации простоев исполнительного конвейера. За операции с памятью, предвыборку в кеш данных, отвечает другой блок, в составе конвейера load/store.