Когда процессу понадобятся страницы памяти с правами на запись и exec одновременно
Я пытаюсь понять, как программы могут быть изолированы и защищены.
Существуют ли действительные случаи, когда процессы должны требовать PROT_WRITE |PROT_EXEC
на странице памяти? Можно ли этого избежать?
Это похоже на то, чего пытались достичь бит NX или W^X или DEP.
Офис Libre, похоже, использует это и создает массу проблем на защищенном Linux.
1 ответ
Эта ситуация требуется только тогда, когда вы пишете то, что составляет загрузчик - то, что будет вводить дополнительный код по требованию с использованием его собственных механизмов - или JIT-компилятор, или одну из ОЧЕНЬ немногих других допустимых ситуаций, в которых приложение должно быть разрешено изменять свой собственный код. Даже там, что часто делается, это контролировать продолжительность этих разрешений, делая страницу доступной для записи только тогда, когда она загружается, а затем переключая ее только на исполняемую, так что на нее нельзя будет перейти после этого.
Я не понимаю, почему Libre Office может подумать, что ему нужна такая возможность. Вы должны были бы обсудить это с сообществом разработчиков.