Вы просматриваете старую версию данной страницы. Смотрите текущую версию.

Сравнить с текущим просмотр истории страницы

« Предыдущий Версия 3 Следующий »

Описание

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

Рекомендации

  1. По возможности исключить использование ПО, в котором выявлены попытки исполнения кода, находящегося в программном стеке, как потенциально небезопасного.
  2. Обратиться к разработчикам ПО для его доработки с целью устранения потенциально небезопасных действий ПО и использовать только доработанное ПО.
  3. При невозможности выполнения предыдущих рекомендаций в сочетании с необходимостью эксплуатировать имеющееся ПО — отключить контроль установки флага исполнения кода в программном стеке:

    Описанное ниже изменение в настройке операционной системы ведет к снижению её защищенности. Применяя это изменение вы принимаете на себя ответственность за возможные последствия.

    Для отключения контроля выполнения кода в программном стеке программном стеке:

    • добавить параметр ядра parsec.execstack=1 в строку значений параметра GRUB_CMDLINE_LINUX_DEFAULT в конфигурационном файле /etc/default/grub. Пример результирующей строки:
      GRUB_CMDLINE_LINUX_DEFAULT="parsec.mac=0 quiet net.ifnames=0 parsec.execstack=1"
    • обновить конфигурацию загрузчика:
      sudo update-grub
    • перезагрузить компьютер.

Рекомендации для разработчиков

Ошибка "cannot enable executable stack as shared object requires: Permission denied" возникает при выполнении системного вызова mprotect(). Для предотвращения возникновения ошибки:

  1. При сборке ПО не использовать параметр компиляции -z execstack. Этот параметр, передаваемый компоновщику. означает, что инструкции, расположенные в стеке, могут быть выполнены.
  2. Для выявления попыток установки флага исполнения (выявления обращений к системному вызову mprotect()) использовать инструмент strace.
  • Нет меток