2013-06-19 3 views
0

Я прочитал об атаке переполнения буфера и хотел узнать, может ли его изменить, если сменить процессор, чтобы он отказался выполнять инструкцию, которая не находится в области кода? thanksКак преодолеть атаки переполнения буфера?

+1

Nah. Просто попробуй проверить свои массивы. 'snprintf()', 'fgets()' и т. д., а 'sizeof' - ваши друзья. –

+0

@userXXX, если вы ** действительно ** не позволяете чему-либо идти дольше, чем предполагалось, то вы в значительной степени отсортированы, даже без написания трюка для записи XOR (что все разумные ОС делают ** в любом случае ** OS X и Linux, но, конечно, не Windows ...) –

ответ

1

Обычно это делается путем установки бит без выполнения на странице памяти или сегменте (например, стек) в современных процессорах. Это помогает избежать некоторых переполнений на основе стека, но не является 100% -ным доказательством безвредности.

Отъезд http://en.wikipedia.org/wiki/No_execute

+2

Примечательно, что это предотвращает выполнение кода, вставляемого в стек. Например, поскольку переполнение буфера может переписать указатель возврата, система по-прежнему уязвима для [возврата в libc-атаку] (http://en.wikipedia.org/wiki/Return-to-libc_attack). –

Смежные вопросы