Когда процессу понадобятся страницы памяти с правами на запись и exec одновременно

Я пытаюсь понять, как программы могут быть изолированы и защищены.

Существуют ли действительные случаи, когда процессы должны требовать PROT_WRITE |PROT_EXEC на странице памяти? Можно ли этого избежать?

Это похоже на то, чего пытались достичь бит NX или W^X или DEP.

Офис Libre, похоже, использует это и создает массу проблем на защищенном Linux.

https://github.com/nning/linux-pax-flags/pull/3

1 ответ

Эта ситуация требуется только тогда, когда вы пишете то, что составляет загрузчик - то, что будет вводить дополнительный код по требованию с использованием его собственных механизмов - или JIT-компилятор, или одну из ОЧЕНЬ немногих других допустимых ситуаций, в которых приложение должно быть разрешено изменять свой собственный код. Даже там, что часто делается, это контролировать продолжительность этих разрешений, делая страницу доступной для записи только тогда, когда она загружается, а затем переключая ее только на исполняемую, так что на нее нельзя будет перейти после этого.

Я не понимаю, почему Libre Office может подумать, что ему нужна такая возможность. Вы должны были бы обсудить это с сообществом разработчиков.

Другие вопросы по тегам