Нужен странный совет, как разрешить процессу Linux ТОЛЬКО создавать и использовать один канал - PullRequest
2 голосов
/ 26 марта 2012

Хой.

Я работаю над экспериментом, позволяющим пользователям использовать 1% моего процессора. Это как ваш собственный веб-сервер; но большая динамическая среда удаленного выполнения (не спрашивайте об этом), и я не хочу, чтобы пользователи использовали функции API, такие как создание файлов, без сокетов, без потоков, без вывода на консоль, ничего.

Update1: Люди будут присылать мне двоичные файлы, так что interrupt 0x80 возможно. Следовательно ... Ядро?

Мне нужно ограничить процесс, чтобы он ничего не мог сделать, кроме использования одного канала . Через этот канал процесс будет использовать мой собственный упакованный и контролируемый API.

Это вообще возможно? Я думал, как модуль ядра Linux.

Проблемы с ограничением ОЗУ и ЦП здесь не являются первичными, для этого есть что-то в Google.

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 26 марта 2012

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

0 голосов
/ 27 марта 2012

Возможно, вы захотите посмотреть, что делает Google с их технологией Native Client и песочницей seccomp.Native Client (NaCl) предназначен для запуска двоичных файлов x86, предоставляемых веб-сайтом, в локальном браузере пользователя.Проблема вредоносных двоичных файлов аналогична той, с которой вы сталкиваетесь, поэтому большинство технологий / исследований, вероятно, применимы непосредственно.

...