none
Создание песочницы для порождаемого процесса RRS feed

  • Вопрос

  • Добрый день!

    Имеется экзешник, получаемый от пользователя. Необходимо его запустить, но так, чтобы он не смог навредить системе.

    Конкретно интересуют следующие вопросы:

    1. Как ограничить потребление памяти?

    2. Как ограничить доступ к файловой системе?

    3. Как ограничить доступ к другим системным ресурсам?

    На данный момент я создаю процесс с помощью класса Process. Вот что я нашел, ковыряясь в его свойствах:

    MaxWorkingSet

    http://msdn.microsoft.com/en-us/library/system.diagnostics.process.maxworkingset(v=vs.110).aspx

    Насколько я понял, это максимальный размер памяти, доступный этому процессу. У меня не работает =(

    UserName

    http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.username(v=vs.110).aspx

    Имя пользователя, от которого запускается процесс. Возможно стоит создать пользователя с минимальными правами и запускать процесс от его имени?

    Заранее спасибо за ответ!

    24 ноября 2013 г. 16:34

Ответы

  • наверное надо создать маленький процесс, не обращаясь к файловой системе и с минимальными параметрами, и поместить экзешник в этот процесс, то есть сделать стальной сейф и поместить что нибудь внутрь 

    И как это сделать? :D

    Sandboxie

    Домашняя страница: http://www.sandboxie.com/

    Разработчик Ronen Tzur сравнивает действие программы Sandboxie с невидимым слоем, нанесенным поверх бумаги: на него можно наносить любые надписи; при снятии защиты, лист останется нетронутым.

    Можно выделить 4 основных способа применения песочниц в Sandboxie:

    • Защищенный интернет-серфинг
    • Улучшение приватности
    • Безопасная email-переписка
    • Сохранение ОС в первоначальном состоянии

    Последний пункт подразумевает, что в песочнице можно устанавливать и запускать любые клиентские приложения — браузеры, IM-мессенджеры, игры — без воздействия на систему. Sandboxie контролирует доступ к файлам, дисковым устройствам, ключам реестра, процессам, драйверам, портам и другим потенциально незащищенным источникам.

    P.S. изучите, может найдется исходник подобного ПО


    25 ноября 2013 г. 15:50
  • Думаю, проще всего пойти по пути запуска процесса от имени пользователя с ограниченными правами. Создание же своей "песочницы" - видимо, задача не тривиальная. Сам не пробовал.

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

    25 ноября 2013 г. 20:45

Все ответы

  • наверное надо создать маленький процесс, не обращаясь к файловой системе и с минимальными параметрами, и поместить экзешник в этот процесс, то есть сделать стальной сейф и поместить что нибудь внутрь
    24 ноября 2013 г. 18:04
  • Вот здесь перечислено несколько готовых решений.
    25 ноября 2013 г. 10:04
  • Мне не нужна отдельная программа. Я пишу приложение на C#, в котором мне требуется запустить пользовательский экзешник, но так, чтобы он не смог нанести вреда системе.
    25 ноября 2013 г. 13:18
  • наверное надо создать маленький процесс, не обращаясь к файловой системе и с минимальными параметрами, и поместить экзешник в этот процесс, то есть сделать стальной сейф и поместить что нибудь внутрь 

    И как это сделать? :D

    25 ноября 2013 г. 13:19
  • наверное надо создать маленький процесс, не обращаясь к файловой системе и с минимальными параметрами, и поместить экзешник в этот процесс, то есть сделать стальной сейф и поместить что нибудь внутрь 

    И как это сделать? :D

    Sandboxie

    Домашняя страница: http://www.sandboxie.com/

    Разработчик Ronen Tzur сравнивает действие программы Sandboxie с невидимым слоем, нанесенным поверх бумаги: на него можно наносить любые надписи; при снятии защиты, лист останется нетронутым.

    Можно выделить 4 основных способа применения песочниц в Sandboxie:

    • Защищенный интернет-серфинг
    • Улучшение приватности
    • Безопасная email-переписка
    • Сохранение ОС в первоначальном состоянии

    Последний пункт подразумевает, что в песочнице можно устанавливать и запускать любые клиентские приложения — браузеры, IM-мессенджеры, игры — без воздействия на систему. Sandboxie контролирует доступ к файлам, дисковым устройствам, ключам реестра, процессам, драйверам, портам и другим потенциально незащищенным источникам.

    P.S. изучите, может найдется исходник подобного ПО


    25 ноября 2013 г. 15:50
  • Думаю, проще всего пойти по пути запуска процесса от имени пользователя с ограниченными правами. Создание же своей "песочницы" - видимо, задача не тривиальная. Сам не пробовал.

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

    25 ноября 2013 г. 20:45
  • Думаю, проще всего пойти по пути запуска процесса от имени пользователя с ограниченными правами. Создание же своей "песочницы" - видимо, задача не тривиальная. Сам не пробовал.

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

    За ссылку спасибо, почитаю. Для явы ведь тоже можно организовать нечто подобное?
    27 ноября 2013 г. 14:32
  • Java не владею, сказать ничего не могу.
    27 ноября 2013 г. 17:48