mprotect всей программы для запуска опасного кода

У меня есть небольшая программа, которая отображает потенциально опасный исполняемый код (с PROT_EXEC), вызывает prctl (PR_SET_SECCOMP, 1) , а затем выполняет это mmap'd код. Это все хорошо и позволяет мне «сохранить» состояние оценки, синхронизируя область mmap с диском, и перезагрузить ее позже (скорее всего, на другой машине для балансировки нагрузки).Однако этот метод не всегда работает - потому что этот код мог внести изменения в программу, которые не находятся в области mmap, и эта информация будет потеряна.

Итак, что я хотел бы сделать, это сделать абсолютно все (кроме этой mmap'd области) доступным только для чтения перед вызовом кода. Таким образом, у меня есть гарантия, что исполняемый код не может изменить состояние чего-либо, кроме области mmap'd, которую я могу сериализовать / десериализовать по своему желанию.

Кстати, это Linux на x86_64

Спасибо

5
задан Heptic 13 November 2011 в 13:28
поделиться