Побег из Docker эксплуатируя уязвимость CVE-2021-41091

Побег из Docker Hack The Box CVE-2021-41091

Контейнеризация приложений с использованием Docker становится все более популярной благодаря изоляции, портативности и масштабируемости. Однако Docker не застрахован от уязвимостей, позволяющих нарушить безопасность хоста. В этой статье на примере прохождения уязвимой виртуальной машины MonitorsTwo с площадки Hack The Box мы попробуем осуществить побег из Docker с помощью уязвимости CVE-2021-41091.

Еще по теме: Пример атаки побег из Docker-контейнера

Краткое описание уязвимости CVE-2021-41091

CVE-2021-41091 — это уязвимость в Moby (Docker Engine), которая позволяет непривилегированным пользователям Linux получить доступ к каталогу данных (обычно /var/lib/docker) и запускать программы в нем из-за неправильно настроенных разрешений. Эта уязвимость присутствует, когда контейнеры содержат исполняемые файлы с расширенными разрешениями, такими как setuid.

Непривилегированные пользователи Linux могут обнаружить и запустить эти программы, а также изменять файлы, если UID пользователя на хосте совпадает с владельцем файла или группой внутри контейнера.

Побег из Docker эксплуатируя уязвимость CVE-2021-41091

Итак, ранее взломав сайт, используя уязвимость, в движке Cacti, мы получили пароль и можем с ним зайти по SSH.

Побег из Docker Hack The Box

Заг­ружа­ем на машину скрипт LinPEAS и выпол­няем его. Единс­твен­ное, что мож­но отме­тить в выводе, — это поч­товые сооб­щения поль­зовате­ля marcus.

Поч­товые сооб­щения
Поч­товые сооб­щения

Смот­рим содер­жимое фай­ла /var/mail/marcus и обна­ружи­ваем, что в перепис­ке упо­мяну­то три уяз­вимос­ти CVE.

Со­дер­жимое фай­ла /var/mail/marcus
Со­дер­жимое фай­ла /var/mail/marcus

Пос­ледний из перечис­ленных багов — это CVE-2021-41091: ошиб­ка в фрей­мвор­ке Moby, которая при опре­делен­ных усло­виях может открыть воз­можность побега из кон­тей­нера.

Moby — это про­ект с откры­тым исходным кодом, раз­работан­ный коман­дой Docker для удобс­тва кон­тей­нериза­ции ПО. Ошиб­ка сво­дит­ся к тому, что каталог с дан­ными (обыч­но это /var/lib/docker) содер­жит под­катало­ги с недос­таточ­но огра­ничен­ными раз­решени­ями. Это поз­воля­ет неп­ривиле­гиро­ван­ным поль­зовате­лям прос­матри­вать содер­жимое катало­га и выпол­нять прог­раммы с их текущи­ми раз­решени­ями.

Таким обра­зом, ког­да кон­тей­нер содер­жит исполня­емый файл с активным S-битом, неп­ривиле­гиро­ван­ные поль­зовате­ли могут выпол­нить эти прог­раммы от име­ни вла­дель­ца (в Docker) на хос­товой машине за пре­дела­ми Docker.

Поп­робу­ем пов­торить эту ата­ку, для чего вер­немся к root-сес­сии в Docker и прис­воим SUID фай­лу коман­дной обо­лоч­ки /bin/bash.

Бит SUID

Ког­да у фай­ла уста­нов­лен атри­бут setuid (S-атри­бут), обыч­ный поль­зователь, запус­кающий этот файл, получа­ет повыше­ние прав до поль­зовате­ля — вла­дель­ца фай­ла в рам­ках запущен­ного про­цес­са. Пос­ле получе­ния повышен­ных прав при­ложе­ние может выпол­нять задачи, которые недос­тупны обыч­ному поль­зовате­лю. Из‑за воз­можнос­ти сос­тояния гон­ки мно­гие опе­раци­онные сис­темы игно­риру­ют S-атри­бут, уста­нов­ленный shell-скрип­там.

Наз­начение S-бита фай­лу /bin/bash
Наз­начение S-бита фай­лу /bin/bash

Те­перь надо най­ти раз­дел, куда при­мон­тирован наш кон­тей­нер. Это нуж­но, что­бы получить дос­туп к фай­лу /bin/bash с S-битом.

Мон­тирован­ные раз­делы Docker
Мон­тирован­ные раз­делы

Есть нес­коль­ко раз­делов Docker — в катало­ге /var/lib/docker/, поэто­му прой­дем­ся по этим дирек­тори­ям и прос­мотрим пра­ва на фай­лы bash.

Фай­лы bash в докерах
Фай­лы bash в докерах

Так находим файл с активным S-битом. Соз­даем новую сес­сию bash в кон­тек­сте поль­зовате­ля root и забира­ем вто­рой флаг.

Флаг рута
Получение флага рута

Защита от уязвимости CVE-2021-41091

CVE-2021-41091 — серьезная уязвимость Docker, позволяющая преодолеть изоляцию контейнеров. Чтобы устранить эту уязвимость, крайне важно обновить Docker до версии 20.10.9 или выше.

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

ПОЛЕЗНЫЕ ССЫЛКИ:

Дима (Kozhuh)

Эксперт в кибербезопасности. Работал в ведущих компаниях занимающихся защитой и аналитикой компьютерных угроз.

Добавить комментарий