Может ли "rm -rf" в контейнере docker удалить файлы на хосте? - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть docker изображение, которое состоит из сценария python, который берет некоторый произвольный исходный код и eval()'s it

Допустим, код был rm -rf. Будет ли это что-нибудь удалять в файловой системе хоста *1005*?

Я думаю, что ответ "нет", но я просто хочу подтвердить, прежде чем попробовать.

1 Ответ

1 голос
/ 26 февраля 2020

Так что, с одной стороны, да, изоляция файловой системы Docker означает, что такие команды, как rm -rf, по умолчанию не могут сделать больше, чем повредить файловую систему контейнера.

Существует довольно большое разнообразие вещи, которые люди обычно делают, которые ослабляют это. Вы привязываете исходный код своего хоста в контейнер, чтобы упростить разработку? Вредоносный код может повредить ваше дерево разработки или скрытно вставить коммиты в ваш каталог .git. Прикрепите гнездо Docker в контейнер, чтобы можно было запускать другие контейнеры? Это просто - воспользоваться преимуществом root для всего хоста.

Это также лишь небольшая часть того, что возможно с eval(). Эксплуатация ядра Linux происходит довольно регулярно, и, поскольку контейнеры Docker совместно используют ядро ​​хоста, eval() ed-код может воспользоваться этим. Есть также такие вещи, как майнеры криптовалюты, которые не опасны per se , но вы все равно не хотите использовать их для других людей.

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

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