Описание
При выполнении стороннего программного обеспечения (ПО) в среде Astra Linux Special Edition 1.7 с установленным актуальным оперативным обновлением работа некоторых программ завершается ошибкой "cannot enable executable stack as shared object requires: Permission denied". Данная ошибка возникает при попытке ПО установить флаг разрешения исполнения на код, находящийся в программном стеке. Исполнение такого кода допустимо на некоторых аппаратных платформах, но может представлять угрозу для безопасности, поэтому по умолчанию запрещено.
Рекомендации
- По возможности исключить использование ПО, в котором выявлены попытки исполнения кода, находящегося в программном стеке, как потенциально небезопасного.
- Обратиться к разработчикам ПО для его доработки с целью устранения потенциально небезопасных действий ПО и использовать только доработанное ПО.
- При невозможности выполнения предыдущих рекомендаций в сочетании с необходимостью эксплуатировать имеющееся ПО — отключить контроль установки флага исполнения кода в программном стеке:
Рекомендации для разработчиков
- При сборке ПО не использовать параметр компиляции -z execstack. Это опция, передаваемая компоновщику. Ключевое слово execstack означает, что инструкции, расположенные в стеке, могут быть выполнены
- Для выявления попыток установки флага исполнения (выявления обращений к системному вызову mprotect()) использовать инструмент strace.