Какие системные вызовы для блокировки / разрешения / проверки для создания супервизора программы - PullRequest
8 голосов
/ 05 сентября 2010

согласно Используя ptrace для записи супервизора программы в пользовательском пространстве , я пытаюсь создать компонент супервизора программы онлайн-судьи.

Какие системные вызовы мне нужно заблокироватьполностью, всегда разрешайте или проверяйте атрибуты:

  • Запретить разветвление или запуск других команд
  • Ограничить стандартными «безопасными» библиотеками C и C ++
  • Запретить сетьaccess
  • Ограничить доступ ко всем файлам, кроме 2 'in.txt' и 'out.txt'
  • Запретить доступ к любым системным функциям или деталям.
  • Запретить приложениюизбегая своего супервизора
  • Предотвратите что-нибудь неприятное.

Спасибо за любую помощь / совет / ссылки, очень признателен.

Ответы [ 3 ]

3 голосов
/ 21 сентября 2010

С точки зрения безопасности, лучший подход - выяснить, что вам нужно разрешить, а не что вам нужно отрицать.Я бы порекомендовал начать с супервизора, который просто регистрирует все, что делает хорошо известный набор программ, а затем вносит в белый список эти системные вызовы и доступ к файлам.Поскольку новые программы запускаются из-за этой очень строгой изолированной программной среды, вы можете оценить ослабление ограничений в каждом конкретном случае до тех пор, пока не найдете нужный профиль.

По сути, именно так создаются профили изолированной программной среды приложения в Mac OS.X.

1 голос
/ 21 сентября 2010

Возможно, вы можете настроить AppArmor , чтобы делать то, что вы хотите.Из часто задаваемых вопросов:

AppArmor - самая эффективная и простая в использовании система безопасности приложений Linux, доступная на рынке сегодня.AppArmor - это инфраструктура безопасности, которая активно защищает операционную систему и приложения от внешних или внутренних угроз, даже атак нулевого дня, путем обеспечения хорошего поведения программы и предотвращения использования даже неизвестных недостатков программного обеспечения.Профили безопасности AppArmor полностью определяют, к каким системным ресурсам могут обращаться отдельные программы и с какими привилегиями.Ряд политик по умолчанию включен в AppArmor, и благодаря сочетанию усовершенствованного статического анализа и инструментов, основанных на обучении, политики AppArmor для даже очень сложных приложений могут быть успешно развернуты за считанные часы.

0 голосов
/ 21 сентября 2010

Если вы хотите, чтобы системные вызовы только проверяли другой процесс, вы можете использовать ptrace (), но у вас не будет никаких гарантий, как сказано в Использование ptrace для написания супервизора программы в пространстве пользователя .

Вы можете использовать valgrind для проверки и перехвата вызовов функций, библиотек, но это будет утомительно, и, возможно, внесение в черный список - не лучший способ сделать это.

Вы также можете использовать systrace, (http://en.wikipedia.org/wiki/Systrace) написание правил для авторизации / блокировки различных вещей, таких как открытие только некоторых файлов и т. Д. Это просто использовать для «песочницы» процессуса.

...