Какой самый безопасный способ запустить исполняемый файл в Linux? - PullRequest
9 голосов
/ 05 октября 2010

Я пытаюсь запустить программу, скомпилированную из кода C из неизвестного источника. Я хочу убедиться, что программа в любом случае не повредит моей системе. Как, например, программа может иметь в исходном коде что-то вроде system("rm -rf /"), которое невозможно обнаружить, если код не будет тщательно изучен.

Я подумал о следующих 2 способах

  1. Запустите его внутри виртуальной машины, например VMWare
  2. Сборка Windows EXE на Linux и запустить на вин

Оба не очень элегантные решения, и я не могу их автоматизировать. а также, в случае 1, это может повредить VM.

Любая помощь будет оценена.

Я хочу запустить программу в том, что мы можем назвать «песочницей».

Ответы [ 9 ]

6 голосов
/ 05 октября 2010

Проверить seccomp .Он был разработан для этого варианта использования.

4 голосов
/ 11 апреля 2011

Я написал обзор методов песочницы в Linux (в архиве) здесь.На мой взгляд, лучше всего использовать контейнеры Linux (lxc) или selinux.Вы можете использовать решение для виртуализации и автоматизировать его, но это требует гораздо больших усилий.

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

4 голосов
/ 05 октября 2010

Geordi использует сочетание chroot и перехвата системных вызовов для компиляции, а затем песочницы произвольного кода.

2 голосов
/ 05 октября 2010

Вы можете использовать что-то вроде schroot и выполнить хроматографию программы, но из этого выйдет что-то достаточно неприятное.

Лучше всего ставить на виртуальную машину (vmware или virtualbox).и сделать снимок перед компиляцией и запуском программы.Таким образом, вы можете откатиться назад, если что-то пойдет не так.

1 голос
/ 05 октября 2010

chroot - это одна из возможностей, если вы хотите изолировать его от всего остального, но при этом все еще есть среда для его запуска.

http://en.wikipedia.org/wiki/chroot

https://help.ubuntu.com/community/BasicChroot

1 голос
/ 05 октября 2010

Википедия для chroot может быть хорошим началом. Он описывает chroot, а также содержит ссылки на несколько более подробных альтернатив.

1 голос
/ 05 октября 2010

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

0 голосов
/ 02 ноября 2011

В дополнение к другим ответам, использование strace или ltrace может помочь вам понять, что делает программа.

0 голосов
/ 06 октября 2010

Запустите его на компьютере, который не подключен к сети, и после его создания вы создадите новый образ.Не существует безопасного способа запустить его на компьютере и продолжать доверять этому компьютеру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...