Etki
где я могу подключиться к этой репе?
Etki
apt.viruses.net?
Bogdan (SirEdvin)
Предположим, старая версия libc, в которой есть баги. Почему бы и нет?
Etki
зачем ему пакет с эксплойтом
Etki
он уже у тебя внутри
Etki
только в апте не будет старой версии с багами
Bogdan (SirEdvin)
только в апте не будет старой версии с багами
Пакет можно и самому в систему поставить.
Bogdan (SirEdvin)
И какой он профит может получить от того, что он внутри контейнера с nginx, с ограниченными правами? Причем так, что бы не особо спалится?
Etki
я могу еще раз сфорвардить все выше
Etki
никакого, как и при доступе от рута
Etki
если он внутри, значит он выполнил свой код через nginx
Etki
значит, он уже видит все, ради чего создавался контейнер
🦠
при правильном логгировании попытка выполнения чего-либо из под рута в контейнера со специфичной ролью будет достаточно быстро обнаружена
Etki
што
Etki
Короче, контейнер может светиться наружу только за счет портов. Чтобы что-то сделать внутри, злоумышленнику необходимо либо иметь доступ к хосту, в случае чего все эти ужимки вообще бесполезны, либо внедряться прямо в железо, чем не будет заниматься никто на свете, либо атаковать через порт. Через порт он может сделать всего две вещи - авторизоваться, если это какой-то сервис, выполняющий команды, либо так или иначе вызвать исполнение кода. Если он каким-либо образом исполнил свой код, то можете считать контейнер потерянным. Рут или не рут здесь уже не имеет никакой разницы, потому что всю ту блевню, о которой вы узнали с php-форумов с заливкой исполняемых файлов ему применять не надо - он уже получил контроль над процессом внутри и может делать, что хочет. Безусловно, есть кейсы, когда он все-таки захочет изменить что-то внутри, но защищаться от этого - это как ставить замок на дверь, оставляя открытыми окна.
Etki
Ну, точнее, через порт он еще может увидеть всякую штуку, которую не должен был увидеть, как в той уязвиомсти с tls было. Но тут вам рут тоже вообще ничем не поможет.
Etki
С учетом того, что в контейнер поверх базового слоя вы пихаете только то, что нужно самому процессу для работы, все это процесс гарантированно будет видеть и защищать от чтения это вообще бесполезно, потому что, ну, процессу все это нужно для работы и он опять же должен все это видеть.
Etki
Поэтому настойчиво рекомендую перестать заниматься блевней и включать голову вместо методичного подбора конкретного айдишника группы и извращений с маунтами.
Bogdan (SirEdvin)
Короче, контейнер может светиться наружу только за счет портов. Чтобы что-то сделать внутри, злоумышленнику необходимо либо иметь доступ к хосту, в случае чего все эти ужимки вообще бесполезны, либо внедряться прямо в железо, чем не будет заниматься никто на свете, либо атаковать через порт. Через порт он может сделать всего две вещи - авторизоваться, если это какой-то сервис, выполняющий команды, либо так или иначе вызвать исполнение кода. Если он каким-либо образом исполнил свой код, то можете считать контейнер потерянным. Рут или не рут здесь уже не имеет никакой разницы, потому что всю ту блевню, о которой вы узнали с php-форумов с заливкой исполняемых файлов ему применять не надо - он уже получил контроль над процессом внутри и может делать, что хочет. Безусловно, есть кейсы, когда он все-таки захочет изменить что-то внутри, но защищаться от этого - это как ставить замок на дверь, оставляя открытыми окна.
А как насчет таких штук: http://www.securitylab.ru/vulnerability/425794.php ?
Denis
В проекте Docker изменения — большую часть компонентов выделили в проект Moby, который дальше будет развиваться как конструктор для построения дистрибутивов на базе нынешних компонентов docker. Само название Docker останется за фирменной сборкой от производителя: http://amp.gs/t7Np Одновременно объявили о выходе LinuxKit — инструменте для создания образов виртуальных машин, наподобие Packer от Hashicorp: http://amp.gs/t7Nl
Bogdan (SirEdvin)
Последствия выполнения произвольного кода будут слабее?
Etki
not that shit again
Etki
какие последствия?
Etki
я просто слышу какие-то слова, за которыми не скрывается ничего конкретного
Etki
/etc/passwd прочтут? мы про это говорили уже
Bogdan (SirEdvin)
Ну вот у тебя пользователь www-data в целом не может ничего, кроме чтения определенных файлов. А root пользователь в целом может в контейнере все. Что правда нет разницы?
Etki
неа
Etki
у тебя в контейнере работает один процесс
Etki
потерян процесс - потеряно все
Etki
он и так видит все, что есть в контейнере
Etki
на новый круг пошли короче
Bogdan (SirEdvin)
Из последнего веселого, что у меня было, поменяли часть стандартных команд на експлойты (ps, top и прочее).
Etki
ps применили!1111
Bogdan (SirEdvin)
Процесс не может модифицировать окружение, если он с ограниченынми правами
Etki
без рута-то никак не применить
Etki
дак а зачем ему модифицировать
Etki
ему процесс интересно захватить
Etki
это на обычном хосте интересно поиграться, хватить натягивать здесь классическую мдель-то
Bogdan (SirEdvin)
без рута-то никак не применить
Не применили, а заменили. Суть в том, что вместо стандартного ps вызывалась другая программа
Bogdan (SirEdvin)
Ну окей
Bogdan (SirEdvin)
Но вот только появится експойлт для docker по тому, как вылезти из контейнера с правами пользователя, тогда заговорим)
Etki
пиздец
Etki
давай все-таки сначала он вылезет, а потом уже будем говорить
Etki
пользователи - это самая минимальная модель изоляции
Etki
но мы же мать его в контейнере
Etki
он сам по себе изолирован от всего остального
Etki
Но вот только появится експойлт для docker по тому, как вылезти из контейнера с правами пользователя, тогда заговорим)
и он, кстати, не появится, потому что этот пользователь не существует вне контейнера. опять же включаем голову.
Bogdan (SirEdvin)
Ну, например https://github.com/gabrtv/shocker/blob/master/README.md
Etki
Exploit fails on Docker 0.12:
Etki
уже бегу забирать свои слова назад
Bogdan (SirEdvin)
Прецендент был? Что мешает ему произойти еще раз?
Etki
что его закрыли?
Bogdan (SirEdvin)
Я понимаю, что эта магия с пользователями не должна быть в списке "топ 5 штук для секьюрити контейнера", но подумать об этом стоит.
Bogdan (SirEdvin)
что его закрыли?
Что мешает найти новый баг?
Bo0oM
че там у вас
Etki
бомбит
Etki
давайте все-таки воздержимся от заявлений "ну найдут еще один"
Bo0oM
Докер покинуть можно с помощью dirty cow например
Bo0oM
И скорее всего от других LPE штук
Bo0oM
Если вы об этом
Etki
там без разницы какой пользователь внутри контейнера
Bogdan (SirEdvin)
Хм, а что насчет такого: не root пользователь не сможет заменить исполняемый файл внутри контейнера, если все правильно настроить?
Etki
еще раз
Etki
он пробрался к тебе в процесс
Etki
ему не нужно его заменять
Etki
да, ему придется повторять процедуру при рестарте контейнера
Etki
но скорее всего он и повторять ее не захочет, получив все в первый же заход
Bogdan (SirEdvin)
Разве? Вот я злоумышленник, моя задача - воровство ваших данных.
Bogdan (SirEdvin)
Мне гораздо удобнее, логичнее и разумнее подменить приложение, что бы оно отсылало мне данные, чем каждую неделю их у вас выкачивать
Bogdan (SirEdvin)
Причем то, что я каждую неделю буду выкачивать данные будет заметно, если вы мониторите траффик
Bogdan (SirEdvin)
А если я буду понемного выкачить себе бд, можно будет и не заметить
Etki
боже
kiosaku
вы чего-то спутали привилегированные и непривилегированные контейнеры, если я правильно суть уловил
Etki
я в этот момент прыгну прямо к базе данных и буду развлекаться уже с ней
kiosaku
ну раз там про пользователя внутри контейнера заспорили
kiosaku
"processes are running inside the container as root but are not appearing as root but as 100000 from the host."
Etki
А если я буду понемного выкачить себе бд, можно будет и не заметить
к тому же писать агента, который занимается пересылкой данных вместо тупого крона, забирающего это дело раз в неделю - ну кто этим будет заниматься
Etki
вот именно что внутри