LINUX.ORG.RU

Выход из контейнера

 ,


2

3

В менеджере контейнеров Docker обнаружена критическая уязвимость. Она позволяет писать в хост-систему с правами root.

>>> Подробности



Проверено: Shaman007 ()
Последнее исправление: cetjs2 (всего исправлений: 5)
Ответ на: комментарий от anonymous

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

Как всегда, эксплойт эксплуатируем только в пограничных случаях, когда неняше дали порулить докером, но рута не дали.

anonymous
()
Ответ на: комментарий от anonymous

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

Да-да, у меня тоже, когда читал, сердце сразу за них прихватило.

t184256 ★★★★★
()
Ответ на: комментарий от anonymous

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

Так ты /etc/shadow не вычитаешь.

t184256 ★★★★★
()
Ответ на: комментарий от anonymous

И, возможно, не один раз!

Конечно не один, кто успеет так ? Эти деятели запустили в цикле docker cp и начали менять сим линк. Так у них был порядка 1% процент срабатывания :)

mx__ ★★★★★
()
Ответ на: комментарий от Maniac_with_a_saw

А че. Номер CVE да тег «решето», без тегов же нынче нельзя.

t184256 ★★★★★
()
Ответ на: комментарий от Slackware_user

Там чтобы воспользоваться уязвимостью, надо админа попросить выполнить операцию копирования. В общем, неприятно, но не смертельно.

turtle_bazon ★★★★★
()
Ответ на: комментарий от anonymous

Так докерд от рута обычно запущен, имея доступ к сокету можно не мучаться со странными эксплойтами, а просто запуститься в привилегированном режиме, смонтировать к себе внутрь файловую систему хоста и делать что угодно. Сокет докера — примерный эквивалент беспарольного sudo или доступа сразу рутом.

Что не отменяет наличия дыры. Такая вот критическая уязвимость, для эксплуатации которой нужны иные критические уязвимости.

anonymous
()
Ответ на: комментарий от anonymous

Однако 1% значит секунд десять реального времени потраченного на попытки.

Да но нужно чтобы именно docker cp была в цикле и ты попал в момент между между формированием ссылок и началом самого копирования и успел ссылку подменить :)

mx__ ★★★★★
()
Ответ на: комментарий от commagray

да, давайте теперь делать юзера под сервис, а потом ещё запускать контейнер под этим юзером. можно ещё много чего придумать, почему бы не запустить в контейнере qemu, разве плохая идея?

anonymous
()
Ответ на: комментарий от anonymous

Так докерд от рута обычно запущен, имея доступ к сокету можно не мучаться со странными эксплойтами,

Так это может заюзать чел с шелом внутри контейнера (не рут) ну залез в контейнер по ssh и фигачит свой скрипт в надежде что кто то в хосте будет делать docker cp и скрипты совпадут по работе :)

mx__ ★★★★★
()
Ответ на: комментарий от mx__

т.е. дождаться чего-то типа ежедневного бекапа. хотя бекапы тоже можно не делать, зачем они нужны.

anonymous
()
Ответ на: комментарий от anonymous

Ну тут хз, бекапы можно и rsynk-ом делать. А можно и коммитом всего контейнера ...

mx__ ★★★★★
()
Ответ на: комментарий от anonymous

При бэкапе

docker cp
не запускается. Я тебе как эксплуататор этого докера говорю.

anonymous
()
Ответ на: комментарий от anonymous

docker cp в принципе никто как правило не делает же, тем более для бекапов.

Бекапы (и вобще персистенси в докере) делаются через вольюмы.

А надо чтобы именно кто-то docker cp исполнил, что вероятно с достаточной частотой разве что при наличии (нерутового, но имеющего доступа к докеру, что само по себе смешно) шелла на хосте.

Однако дыры могло бы и не быть, в самом деле, при всей маловероятности стечений обстоятельств, когда её эксплойт будет осмысленным.

Олсо, гитлабовые раннеры например обычно запускают контейнер в докере, в котором запускают сервисы CI. С копированием и dind, даже с этой багой, они получат доступ только к фс родительского контейнера, от которой толку не так много, а на одном чтении-записи из родителя в хост не вылезти же.

anonymous
()
Ответ на: комментарий от anonymous

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

anonymous
()
Ответ на: комментарий от anonymous

Сир. 6:2, а я разобрался и рут-таки не нужен. Побега вроде тоже нет, но многие обозреватели, комментаторы и анонимные аналитики решили, что это побег.

t184256 ★★★★★
()
Ответ на: комментарий от dimgel

Почему вообще такой хайп на контейнеры, а не виртуалки? Наверняка ведь можно собрать тонюсенькое ядрышко с каким-нибудь зарезанным init-ом, которое будет стартовать за миллисекунды и жрать мегабайт своей памяти. И в чём тогда будет преимущество контейнеров?

Legioner ★★★★★
()
Ответ на: комментарий от dimgel

>> Похоже действительно нужна какая-то совсем другая архитектура и железа и ОС, чтобы дыры чуть не каждый день не вылазили.

> Нужны какие-то совсем другие люди, чтобы не считали нагромождение слоёв решением любой проблемы. Контейнеры могут быть хороши для определённых сценариев (e.g. простой редеплоймент с окружением для быстрого развёртывания), но городить лишний слой поверх хостовой системы прав ради безопасности — это идеальный пример костыля.

Или, как вариант, запускать контейнеры не от рута. В новости пишут, что можно получить рута, если воспользоваться уязвимостью, чтобы вылезти из контейнера. А что если взломщик получит только юзера с пустым home directory и access denied к другим директориям? Ну или там, chroot в директорию с bootstrap

Иксы же научили работать не от рута. И виртуалочки тоже работают от юзера. У меня Виртуалбокс даже может редактировать /dev/sdb (проброс харда в виртуалку) без рута (в убунте отказалось, а в генте и сусе без проблем)

ZenitharChampion ★★★★★
()

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

anonymous
()
Ответ на: комментарий от t184256

Вкратце? В случае полной виртуализации изоляция иногда ломается, а в случае чрутов-переростков - иногда наблюдается.

На x86 полная виртуализация по определению невозможна, дятел.

anonymous
()

After the full path has been resolved, the resolved path is passed around a bit and then operated on a bit later (in the case of 'docker cp' it is opened when creating the archive that is streamed to the client). If an attacker can add a symlink component to the path *after* the resolution but *before* it is operated on, then you could end up resolving the symlink pathccomponent on the host as root. In the case of 'docker cp' this gives you read *and* write access to any path on the host.

Соответственно, для использования уязвимости нужно подготовить «a symlink component», потом маякнуть своему сообщнику, у которого есть root на хосте, чтобы он сделал специальный 'docker cp' и тогда с вероятностью 1% случится магия. Сотня другая 'docker cp' и побег удался. Изи!

ugoday ★★★★★
()
Последнее исправление: ugoday (всего исправлений: 1)
Ответ на: комментарий от ZenitharChampion

виртуалбокс по-моему вообще как модуль ядра работает. если там будет уязвимость, он тебе сразу пароль рута отредактирует, а не только /dev/sdb. если в убунте не запустилось попробуй добавиться в группу vboxusers или погугли чё там такое вообще.

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

это по-моему вообще для скриптоты всякой которая работает в однопользовательском режиме в окружении прибитом к этой скриптоте гвоздями. кросс-платформенность на питоне? не, для этого с++ нужен. просто не все просекли эту фишку и потащили куда надо и куда не надо, заодно разобрались к чему весь этот хайп. это пройдёт (но в продакшене останется).

anonymous
()

Shaman007 Шом, ЛОРчик перешёл на пост-модернизм? Поздравляю, не прошло и -дцати лет!

mos ★★☆☆☆
()
Ответ на: комментарий от anonymous

> виртуалбокс по-моему вообще как модуль ядра работает. если там будет уязвимость, он тебе сразу пароль рута отредактирует, а не только /dev/sdb

Так вот как это работает. Я не вспомнил про vboxdrv.ko. Думал «неужели одно только членство в группе vboxusers позволяет юзеру запись в блочные устройства?». Думал что у группы более широкие права. А это, оказывается, через драйвер!

> если в убунте не запустилось попробуй добавиться в группу vboxusers

Добавлено. Виртуалочки работают. Но юзера не пускают туда, куда ему не положено заходить. В Ubuntu. А в SUSE и Gentoo почему-то доступ есть

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

Как вариант, юзера можно не добавлять в sudoers )

ZenitharChampion ★★★★★
()

А что если писАть нормальный софт а не в стиле DOS поделок, где «щиталось хорошим тоном оставить после себя ОС в юзабельном состоянии» и привлекать нормальных админов а не индусских PhD в чалме?
https://www.meme-arsenal.com/memes/68f610440f761f775cbc4bb6f39ea110.jpg
лучше 100500 кастыльных виртуализаций

mos ★★☆☆☆
()
Ответ на: комментарий от ZenitharChampion

Как вариант, юзера можно не добавлять в sudoers )

да не, бред какой-то. надо же куда-то вкорячить докер и добавить его в своё резюме.

anonymous
()
Ответ на: комментарий от anonymous

На x86 полная виртуализация по определению невозможна, дятел.

Правда-правда? Я даже не поленился поискать по предполагаемым словам, и таки нашел, ибо это достойно!
Релиз QEMU 2.6.0 (комментарий)
Это не единственный проект, почитайте его темы/комментарии.
Cast alt-x помню была еще тема про «чугунный» завод, но сходу не нашел. :( Если не сложно покажите анону и ту историю успеха.

anc ★★★★★
()

Docker понимаю - уязвимость. Но docker, лично я, не использую, меня заинтересовала эта новость в контексте LXC.

А LXC кто-то запускает от root'а для гостей....

LXC от пользователя с маппингом UID/GID и каким методом выскочить под root, так и не понял. Если тиражировать/backup'ить то снятием snapshot'ов на btrfs.

Возможно, я чего-то не понял. Или понял/делал не так. Ткните пож. более подробно.

PS: По информации, докер сейчас уже отошел от LXC они там чего-то свое прикрутили.

vbv
()
Ответ на: комментарий от anonymous

почему бы не запустить в контейнере qemu, разве плохая идея?

ты вот смеешься, а у нас по работе реально был такой солюшен. и это даже был не (совсем) бредовый костыль.

val-amart ★★★★★
()
Ответ на: комментарий от anc

Правда-правда?

Правда. От историй успехов она кривдой не станет.

anonymous
()
Ответ на: комментарий от WitcherGeralt

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

Потом в iptables глянешь и удовольствие из всех отверстий наружу просится.

anonymous
()
Ответ на: комментарий от question4

Это случайность, решил посмотреть на форму самоликвидации, потыркал тырточки… посмотрел блин, потыркал ::) Автоввод пароля меня порешал и я такой

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от dimgel

Слаку животворящую ругать может только настоящий обырвалг. И да, Патрик - Бох! Пишу с Ubuntu. О слаке - только тёплые воспоминания. Если бы жил несколько жизней, одна из них была точно на слаке.

Desmond_Hume ★★★★★
()

думал, что это новая игра для INSTEAD вышла

buratino ★★★★★
()

Заметил, где обсуждение докера там тонны гнева.

SergeyF
()
Ответ на: комментарий от anonymous

Потом в iptables глянешь и удовольствие из всех отверстий наружу просится.

Может не надо мешать «твердое с зеленым»? Если полагаться на «автоматизацию» то да, так и будет, но никто не запрещает «послать это в ...» и готовить так как удобно вам. Конечно для этого надо чуть больше нагрузить нейросеть, но не все осиливают её использование.

anc ★★★★★
()
Последнее исправление: anc (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.