2010-09-05 3 views
8

в соответствии с Using ptrace to write a program supervisor in userspace, я пытаюсь создать компонент диспетчера программы онлайн-судьи.Какие системные вызовы блокировать/разрешать/проверять, чтобы создать диспетчер программ

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

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

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

ответ

3

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

Это, по существу, как профили песочницы приложения разработаны на Mac OS X.

0

Если вы только хочешь системные вызовы для проверки другого отростка, вы можете использовать ptrace(), но НУ не будет никаких гарантий, как сказан в Using ptrace to write a program supervisor in userspace.

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

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

1

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

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

Смежные вопросы