Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

...

  1. При сборке ПО не использовать параметр компиляции -z execstack. Этот параметр, передаваемый компоновщику. означает, что инструкции, расположенные в стеке, могут быть выполнены. Такое разрешение полностью снимает контроль над исполнением кода в стеке.
  2. Использовать при сборке программ опцию --no-trampolines, исключающий обработку вариант обработки вложенных функция с помощью создания исполняемого кода в стеке.
  3. Ошибка "cannot enable executable stack as shared object requires: Permission denied" возникает при попытке установки флага разрешения исполнения на область памяти, т.е. при попытке исполнения системного вызова mprotect(). Для предотвращения возникновения ошибки следует исключить такие вызовы. Для выявления попыток установки флага исполнения (выявления обращений к системному вызову mprotect()) в ходе исполнения программы использовать инструмент strace.