Как запретить системные вызовы при запуске программы в среде песочницы? - PullRequest
6 голосов
/ 11 декабря 2010

Я проверял codepad.org, и вилка while (1) выдала следующий вывод:

Запрещенный системный вызов: SYS_fork

Проверьте эту ссылку для точных подробностей.http://codepad.org/rNR9mMVv

Погуглив больше, я узнал, что они также отключают системный вызов с помощью сокетов.

Запрещен системный вызов: SYS_socketcall

Может кто-нибудь сказать мне, как можно отключить определенные системные вызовы перед запуском программы в изолированной среде?

Ответы [ 4 ]

1 голос
/ 16 декабря 2010

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

1 голос
/ 11 декабря 2010

Заменив библиотеки времени выполнения на ложные заглушки или метатели исключений вместо реальных функций?

0 голосов
/ 18 апреля 2013

Я знаю, что это старый вопрос, но я занимался тем же, поэтому вот мое предложение - используйте SELinux . Проект Gentoo , содержит некоторые хорошие вещи о SELinux. Взгляните на типы политик SELinux (4.b) и, в частности, на политику target . Я не уверен насчет codepad.org , но аналогичный ideone.com использует Gentoo, поэтому, возможно, SELinux должен быть самым простым способом.

0 голосов
/ 16 декабря 2010

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

...