Comments 8
Современные процессоры используют предиктор ветвей для ускорения операций с помощью — это достигается за счет того, что система может «предсказывать» адреса, где находятся инструкции, которые скоро будут исполнены.А что за «операции с помощью»?
0
Очевидно это опечатка и должно быть «операции с памятью».
Именно так я и прочитал, даже не заметил ошибку.
На хабре принято о таком сообщать в ЛС а не занимать место лишним комментарием.
Именно так я и прочитал, даже не заметил ошибку.
На хабре принято о таком сообщать в ЛС а не занимать место лишним комментарием.
0
А мне кажется, что уж в корпоративном блоге, люди, которым платят за такие посты, должны хотя бы уметь перечитывать свои тексты. А если у них не получается это делать, то надо тыкать их острой палочкой.
-6
Весьма интересная статья, но хотелось бы по возможности, чтобы были примеры-какие конкретно операции и т д., а не общими фразами.
+1
Я понял как-то так. Пусть нам надо найти с какого адреса загружено ядро. С KASLR он выбирается случайно при загрузке, то есть несколько бит в адресе выбираются случайно, не весь адрес. Вначале посмотрим исходники, чтоб найти какой-нибудь переход который легко вызвать, ну, например, в syscall-е каком-то,
Если время перехода по нашему (user-space) переходу коррелирует с аргументами syscall-а, то поздравляю, мы нашли нужный адрес.
if(fd>0)
, или что-то такое. Потом в своем адресном пространстве (в user-space) на каждом адресе где может быть этот if() в ядре, пишем свой if(). Ну и дальше — вызвать syscall, замерить время перехода своего if()-а. Повторить много раз. Повторить для всех адресов где может быть этот if() в ядре.Если время перехода по нашему (user-space) переходу коррелирует с аргументами syscall-а, то поздравляю, мы нашли нужный адрес.
+1
Собственно, в статье по ссылке авторов не говорится про ошибку в процессорах Intel.
Указывается, что найдена возможность выполняя специально подготовленный код и измеряя время исполнения атакуемого кода, восстановить карту памяти. Для атаки используется тот факт, что современный суперскалярный процессор использует механизм предсказания переходов (BTB — буфер адресов переходов). И, зная принципы его работы, можно привести BTB в заранее заданное состояние. Это не приведёт к ошибке работы атакуемой программы, но изменит время её исполнения(увеличит). Что, в свою очередь, позволяет восстановить физический адрес памяти атакуемого процесса исходя из принципа рандомизации страничного адреса ASLR.
И да, предсказание переходов используется не для ускорения операций с памятью, а для формирования адреса следующей инструкции при ветвлении по неизвестному адресу, для минимизации простоев исполнительного конвейера. За операции с памятью, предвыборку в кеш данных, отвечает другой блок, в составе конвейера load/store.
Указывается, что найдена возможность выполняя специально подготовленный код и измеряя время исполнения атакуемого кода, восстановить карту памяти. Для атаки используется тот факт, что современный суперскалярный процессор использует механизм предсказания переходов (BTB — буфер адресов переходов). И, зная принципы его работы, можно привести BTB в заранее заданное состояние. Это не приведёт к ошибке работы атакуемой программы, но изменит время её исполнения(увеличит). Что, в свою очередь, позволяет восстановить физический адрес памяти атакуемого процесса исходя из принципа рандомизации страничного адреса ASLR.
И да, предсказание переходов используется не для ускорения операций с памятью, а для формирования адреса следующей инструкции при ветвлении по неизвестному адресу, для минимизации простоев исполнительного конвейера. За операции с памятью, предвыборку в кеш данных, отвечает другой блок, в составе конвейера load/store.
+9
Sign up to leave a comment.
В процессорах Intel обнаружена ошибка, позволяющая обходить защиту ASLR