Создание безопасной среды для ненадежного кода Python - PullRequest
0 голосов
/ 31 октября 2018

Я пишу приложение, в котором нам нужно выполнить недоверенный код Python. (т. е. приложение, аналогичное серверу отправки домашних заданий, в котором данные учащихся не заслуживают доверия)

Подумав об этом, я сначала подумал о том, что, отключив возможности ввода-вывода для языка (и, следовательно, ограничив код только использованием stdin / stdout), программа не сможет причинить много вреда системе.

Это правильно, или есть векторы атаки, о которых я не думал?

Есть ли какой-нибудь флаг Python или опция компилятора, которую я могу передать, чтобы изолировать код?

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Я бы не стал выполнять произвольный код на вашем компьютере, используя любой из методов песочницы python, поскольку специалист по безопасности несколько раз демонстрировал, как их можно избежать. Выход из песочницы питона

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

Закаливание контейнеров Linux

Наконец, вы можете попытаться разобрать код Python в AST и перейти на уровень ниже, чтобы убедиться, что опасных действий нет.

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

0 голосов
/ 31 октября 2018

Запустите их в док-контейнерах!

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

...