Помогите, пожалуйста, понять логику работы Guard pages.
Цитата из книги Absolute OpenBSD от 2013 г. (стр. 174).
Guard Pages
Many pieces of software used to access memory beyond what they allocated. If a program writes to memory that doesn’t belong to it, it’s writing to memory that belongs to a different program. Intruders use this to exploit programs. A guard page is a single page of memory next to the memory allo- cated by a program. The program cannot write to this memory. If the pro- gram tries to write to the guard page, it probably will crash. By enforcing this limit, OpenBSD protects other programs.
Using guard pages everywhere would use a lot of memory, so OpenBSD enables guard pages only in carefully selected places.
Смущает именно вот это место:
If a program writes to memory that doesn’t belong to it, it’s writing to memory that belongs to a different program.
Разве одна программа может изменить память другой программы - другого процесса? Если я не ошибаюсь, то механизм виртуальной памяти не даст такому произойти. Максимум, что может случиться - это перезапись *своей* же страницы памяти, но никак не страницы памяти другого процесса.
И, исходя из этого, guard pages могут помочь при отладке переполнений буфера в рамках *одного* процесса, но никак не между процессами.
ЧЯДНТ?
cast beastie