Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Программирование Новый топик    Ответить
 Песочница / sandbox - для опасного кода - с лимитами по CPU, RAM  [new]
private
Member

Откуда:
Сообщений: 1733
Существует-ли легковесная и безопасная песочница для опасного кода? Для JavaScript (можно не 100% совместимость со стандартом), Ruby?

Нужно:

- Легковесность - быстро создать и убить.
- Возможность установить лимиты на CPU (скажем не больше пары секунд), и RAM
- Возможность на сервере с 32Гб запустить скажем 320 песочниц по 100Мб каждая.
- Возможность общатся по сети, но только с разрешенными сервисами.
- Доступ к диску не нужен.

Вроде Докер все это может, но вот не уверен на счет насколько это будет эффективно и быстро создать убить.
Есть еще вроде специальные маленькие виртуальные машины для JavaScript для микроконтроллеров/embedded device. Может там можно поставить лимиты.
19 дек 18, 01:17    [21767846]     Ответить | Цитировать Сообщить модератору
 Re: Песочница / sandbox - для опасного кода - с лимитами по CPU, RAM  [new]
private
Member

Откуда:
Сообщений: 1733
Теоретически - можно накупить пару тысяч распберри пи - и получить пару тысяч песочниц. Полная изоляция друг от друга, никто никому не мешает, зависла больше 3 секунд - выдернул, стер все и запустил заново. Как-то можно что-то подобное виртуально сделать на одном большом сервере?
19 дек 18, 01:21    [21767849]     Ответить | Цитировать Сообщить модератору
 Re: Песочница / sandbox - для опасного кода - с лимитами по CPU, RAM  [new]
alex55555
Member

Откуда:
Сообщений: 2096
private
Для JavaScript

Для него есть масса интерпретаторов. Нужно погуглить и по каждому почитать в доках, есть ли нужные ограничения. Даже если нет, то некоторые легко расширяются, а потому любые ограничения можно дописать.
19 дек 18, 10:45    [21768028]     Ответить | Цитировать Сообщить модератору
 Re: Песочница / sandbox - для опасного кода - с лимитами по CPU, RAM  [new]
Leonid Kudryavtsev
Member

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

Первая попавшаяся ссылка в google
https://skeletor.org.ua/?p=4143

Ну или посмотреть на что нибудь типа docker. Не думаю, что там большие overhead по ресурсам. По крайне мере десятки докеров (под полусотню) на одном сервере видел, как будут жить в реальности 320 контейнеров - не знаю.

Тут еще важно кол-во threads и насколько активная работа. Что бы на переключение потоков много ресурсов не тратилось. 320+ активных threads - это все же достаточно много. Выдержит ли процессор(а) ?
19 дек 18, 15:47    [21768504]     Ответить | Цитировать Сообщить модератору
 Re: Песочница / sandbox - для опасного кода - с лимитами по CPU, RAM  [new]
Малыхин Сергей
Member

Откуда: г. Курск
Сообщений: 715
Под такие требования и браузер с воркерами подойдет просто запустить его с правильными флагами --js-flags тынц 1176 строка
Или даже nodeJS с теми же флагами.

Но в плане создать убить браузер будет в разы быстрее работать и песочница у него уже готовая. и балансировать нагрузку он сам умеет.
19 дек 18, 16:24    [21768556]     Ответить | Цитировать Сообщить модератору
 Re: Песочница / sandbox - для опасного кода - с лимитами по CPU, RAM  [new]
private
Member

Откуда:
Сообщений: 1733
Малыхин Сергей спасибо, я не знал что в веб-воркере можно лимит на память установить
20 дек 18, 07:53    [21769104]     Ответить | Цитировать Сообщить модератору
 Re: Песочница / sandbox - для опасного кода - с лимитами по CPU, RAM  [new]
Малыхин Сергей
Member

Откуда: г. Курск
Сообщений: 715
Это флаги движка v8 и лимит они на все процесы js выставляют
20 дек 18, 09:03    [21769140]     Ответить | Цитировать Сообщить модератору
 Re: Песочница / sandbox - для опасного кода - с лимитами по CPU, RAM  [new]
private
Member

Откуда:
Сообщений: 1733
Кстати, погонял тесты nashorn это свой движек JavaScript встроенный в Java, там тоже можно установить лимиты по памяти и цпу. Запустил 20 параллельных песочниц на выполнение кода "2 + 2" - потребление памяти 600Мб. Получается каждый из песочниц сходу 30Мб забирает просто для себя.
21 дек 18, 00:30    [21770155]     Ответить | Цитировать Сообщить модератору
 Re: Песочница / sandbox - для опасного кода - с лимитами по CPU, RAM  [new]
private
Member

Откуда:
Сообщений: 1733
Еще такой вопрос, теоретический, но интересно узнать. Есть же GPU процессоры еще, их сотни на видео карте, и они не имеют доступа к обычным функциям. И поскольку у каждого GPU свой процессор и память (вроде как) то переполнения быть не может. Интересно - их можно как сандбокс использовать? Не для жаваскрипта, а для их специализированного языка расчетов.
21 дек 18, 01:07    [21770163]     Ответить | Цитировать Сообщить модератору
 Re: Песочница / sandbox - для опасного кода - с лимитами по CPU, RAM  [new]
alex55555
Member

Откуда:
Сообщений: 2096
private
Интересно - их можно как сандбокс использовать?

Использовать можно всё, но усилий для этого иногда нужно больше, чем ваша короткая жизнь вам позволит. Если вы про GPU только звон слышали, то использовать его специфическим образом вы сумеете лишь лет через цать.
21 дек 18, 14:40    [21770541]     Ответить | Цитировать Сообщить модератору
 Re: Песочница / sandbox - для опасного кода - с лимитами по CPU, RAM  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 3317
в Windows 10 Profession и Enterprise есть компонент Windows Sandbox
https://habr.com/company/infopulse/blog/433706/
21 дек 18, 15:33    [21770630]     Ответить | Цитировать Сообщить модератору
 Re: Песочница / sandbox - для опасного кода - с лимитами по CPU, RAM  [new]
a.guest
Member

Откуда:
Сообщений: 35
firejail
28 дек 18, 03:15    [21775374]     Ответить | Цитировать Сообщить модератору
 Re: Песочница / sandbox - для опасного кода - с лимитами по CPU, RAM  [new]
kealon(Ruslan)
Member

Откуда: Нижневартовск
Сообщений: 4487
private,

ну ладно, найдёшь движок с тюнингом, а окружение во первых какое? и как его моделировать собрался?
28 дек 18, 10:14    [21775473]     Ответить | Цитировать Сообщить модератору
 Re: Песочница / sandbox - для опасного кода - с лимитами по CPU, RAM  [new]
mayton
Member

Откуда: loopback
Сообщений: 40512
private
Вроде Докер все это может, но вот не уверен на счет насколько это будет эффективно и быстро создать убить.

Совершенно непонятно что значит эффективно и быстро убить?

Мне было в студенчестве сложно убивать процесс while(true){} запущенный с TIME_CRIT приоритетом
под Windows-95.

Это имелось в виду?
28 дек 18, 11:01    [21775528]     Ответить | Цитировать Сообщить модератору
 Re: Песочница / sandbox - для опасного кода - с лимитами по CPU, RAM  [new]
private
Member

Откуда:
Сообщений: 1733
Окружение не нужно, виртуальной машины жаваскрипт и доступа к разрешенным портам на других разрешенных машинах достаточно.

Убить - да. Если он займет все процессорное время или память и зависнет надолго прежде чем песочница сможет вернуть контроль и убить его.
28 дек 18, 11:20    [21775542]     Ответить | Цитировать Сообщить модератору
 Re: Песочница / sandbox - для опасного кода - с лимитами по CPU, RAM  [new]
kealon(Ruslan)
Member

Откуда: Нижневартовск
Сообщений: 4487
private
Окружение не нужно, виртуальной машины жаваскрипт и доступа к разрешенным портам на других разрешенных машинах достаточно.
в плане не нужно? сферический математический код которому не DOM-документа не нужен, ни чего либо ещё?
28 дек 18, 11:46    [21775577]     Ответить | Цитировать Сообщить модератору
 Re: Песочница  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 47394
private
Если он займет все процессорное время или память и зависнет надолго прежде чем песочница сможет вернуть контроль и убить его.

JavaScript не компилируется в машинный код, поэтому песочница исполняет каждую инструкцию и контроль никогда не теряет.
28 дек 18, 14:55    [21775810]     Ответить | Цитировать Сообщить модератору
 Re: Песочница / sandbox - для опасного кода - с лимитами по CPU, RAM  [new]
alex55555
Member

Откуда:
Сообщений: 2096
Dimitry Sibiryakov
JavaScript не компилируется в машинный код, поэтому песочница исполняет каждую инструкцию и контроль никогда не теряет.

Компилируется. Зависит от движка.
28 дек 18, 15:04    [21775824]     Ответить | Цитировать Сообщить модератору
 Re: Песочница / sandbox - для опасного кода - с лимитами по CPU, RAM  [new]
mayton
Member

Откуда: loopback
Сообщений: 40512
Вобщем топик пока безпредметен.

Хорошо-бы рассмотреть кейс когда JavaScript (браузер+web-assembly?, Lua?, NodeJS?, Nashorn? Rhino? ) повесил операционку.

Автор у вас есть образец вредноносного кода который вы собираетесь тестить
и который настолько плох что создает проблемы такого масштаба?
28 дек 18, 21:58    [21776077]     Ответить | Цитировать Сообщить модератору
 Re: Песочница / sandbox - для опасного кода - с лимитами по CPU, RAM  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 6158
alex55555
Dimitry Sibiryakov
JavaScript не компилируется в машинный код, поэтому песочница исполняет каждую инструкцию и контроль никогда не теряет.

Компилируется. Зависит от движка.
Бред. Как впрочем, и все, что ты пишешь.
28 дек 18, 22:36    [21776088]     Ответить | Цитировать Сообщить модератору
 Re: Песочница / sandbox - для опасного кода - с лимитами по CPU, RAM  [new]
Малыхин Сергей
Member

Откуда: г. Курск
Сообщений: 715
Siemargl
alex55555
пропущено...

Компилируется. Зависит от движка.
Бред. Как впрочем, и все, что ты пишешь.

Ну почему же бред?
Там очень годный ассемблер и несколько компиляторов https://chromium.googlesource.com/v8/v8/ /master/src/assembler-inl.h
Наверно это лучшее встраиваемое решения для компиляции на лету в приложении и оптимизация под текущую архитектуру от разработчиков архитектуры идет из коробки.

Подходит не только для JS. Например если хочешь свой новый супер пупер язык программирования то просто генеришь байткод для этого ассемблера и скармливаешь компилятору.
Вроде языки D и Go работают на этом компиляторе но это не точно =).
29 дек 18, 10:06    [21776228]     Ответить | Цитировать Сообщить модератору
 Re: Песочница / sandbox - для опасного кода - с лимитами по CPU, RAM  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 6158
Малыхин Сергей
Siemargl
пропущено...
Бред. Как впрочем, и все, что ты пишешь.

Ну почему же бред?
Там очень годный ассемблер и несколько компиляторов https://chromium.googlesource.com/v8/v8/ /master/src/assembler-inl.h
Наверно это лучшее встраиваемое решения для компиляции на лету в приложении и оптимизация под текущую архитектуру от разработчиков архитектуры идет из коробки.

Подходит не только для JS. Например если хочешь свой новый супер пупер язык программирования то просто генеришь байткод для этого ассемблера и скармливаешь компилятору.
Вроде языки D и Go работают на этом компиляторе но это не точно =).

про D и Go - неверно
29 дек 18, 16:29    [21776520]     Ответить | Цитировать Сообщить модератору
 Re: Песочница / sandbox - для опасного кода - с лимитами по CPU, RAM  [new]
mayton
Member

Откуда: loopback
Сообщений: 40512
Node Js кажется использует.
29 дек 18, 17:59    [21776560]     Ответить | Цитировать Сообщить модератору
Все форумы / Программирование Ответить