Страницы

Поиск по вопросам

среда, 25 декабря 2019 г.

Защита памяти при сегментной организации

#ос #уязвимости #ассемблер


Приветствую.
Есть такая штука, как переполнение буффера: мы затираем адрес возврата в стеке на
какой-то другой, по которому расположены инструкции, которые мы хотим выполнить. И
скорее всего на адрес, который принадлежит сегменту стека (ну или кучи). Почему процессор,
когда EIP указывает на адрес не из сегмента кода, не паникует и не выдает ошибку сегментации?
Разве это не отслеживается флагами в дескрипторе сегментов?
Википедия говорит, что такой защиты нет, но тогда возникает разумный вопрос, почему?    


Ответы

Ответ 1



По поводу дискуссии, развернувшейся в комментариях (о случайном расположении стека в памяти), можно почитать про Address Space Layout Randomization. По поводу возможности или невозможности исполнения памяти мне было интересно почитать о PaX. Случайно наткнулся на статью Касперски Переполнение буфера на системах с неисполняемым стеком, теперь знаю много умных слов :)

Комментариев нет:

Отправить комментарий