Lanzamiento del sistema de paquete autónomo Flatpak 1.12.0

Se ha publicado una nueva rama estable del kit de herramientas Flatpak 1.12, que proporciona un sistema para crear paquetes autónomos que no están vinculados a distribuciones de Linux específicas y se ejecutan en un contenedor especial que aísla la aplicación del resto del sistema. Se proporciona soporte para ejecutar paquetes Flatpak para Arch Linux, CentOS, Debian, Fedora, Gentoo, Mageia, Linux Mint, Alt Linux y Ubuntu. Los paquetes Flatpak están incluidos en el repositorio de Fedora y son compatibles con el administrador de aplicaciones nativo de GNOME.

Innovaciones clave en la rama Flatpak 1.12:

  • Gestión mejorada de entornos sandbox anidados utilizados en el paquete flatpak con el cliente para el servicio de entrega de juegos Steam. En sandboxes anidados, se permite la creación de jerarquías separadas de los directorios /usr y /app, que se utilizan en Steam para iniciar juegos en un contenedor separado con su propia partición /usr, aislado del entorno con el cliente Steam.
  • Todas las instancias de paquete con el mismo identificador de aplicación (ID de aplicación) comparten los directorios /tmp y $XDG_RUNTIME_DIR. Opcionalmente, utilizando el indicador “--allow=per-app-dev-shm”, puede habilitar el uso del directorio compartido /dev/shm.
  • Soporte mejorado para aplicaciones de interfaz de usuario de texto (TUI) como gdb.
  • Se ha agregado una implementación más rápida del comando “ostree prune” a la utilidad buildupdate-repo, optimizada para trabajar con repositorios en modo archivo.
  • Se soluciona la vulnerabilidad CVE-2021-41133 en la implementación del mecanismo del portal, asociada con la falta de bloqueo de nuevas llamadas al sistema relacionadas con el montaje de particiones en las reglas seccomp. La vulnerabilidad permitió a la aplicación crear una zona de pruebas anidada para evitar los mecanismos de verificación del "portal" que se utilizan para organizar el acceso a los recursos fuera del contenedor.

    Como resultado, un atacante, al realizar llamadas al sistema relacionadas con el montaje, podría eludir el mecanismo de aislamiento del espacio aislado y obtener acceso completo al contenido del entorno host. La vulnerabilidad solo puede explotarse en paquetes que brindan a las aplicaciones acceso directo a sockets AF_UNIX, como los utilizados por Wayland, Pipewire y pipewire-pulse. En la versión 1.12.0, la vulnerabilidad no se eliminó por completo, por lo que la actualización 1.12.1 se lanzó pisándole los talones.

Le recordamos que Flatpak permite a los desarrolladores de aplicaciones simplificar la distribución de sus programas que no están incluidos en los repositorios de distribución estándar preparando un contenedor universal sin crear ensamblajes separados para cada distribución. Para los usuarios preocupados por la seguridad, Flatpak les permite ejecutar una aplicación cuestionable en un contenedor, brindando acceso solo a las funciones de red y archivos de usuario asociados con la aplicación. Para los usuarios interesados ​​en nuevos productos, Flatpak les permite instalar las últimas versiones estables y de prueba de aplicaciones sin la necesidad de realizar cambios en el sistema. Por ejemplo, los paquetes Flatpak están diseñados para LibreOffice, Midori, GIMP, Inkscape, Kdenlive, Steam, 0 AD, Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio, etc.

Para reducir el tamaño del paquete, incluye solo dependencias específicas de la aplicación, y las bibliotecas básicas del sistema y de gráficos (bibliotecas GTK, Qt, GNOME y KDE, etc.) están diseñadas como entornos de ejecución estándar de complementos. La diferencia clave entre Flatpak y Snap es que Snap utiliza los componentes del entorno principal del sistema y el aislamiento basado en el filtrado de llamadas del sistema, mientras que Flatpak crea un contenedor separado del sistema y opera con grandes conjuntos de tiempo de ejecución, proporcionando no paquetes como dependencias, sino estándar. sus entornos de sistema (por ejemplo, todas las bibliotecas necesarias para el funcionamiento de los programas GNOME o KDE).

Además del entorno de sistema estándar (tiempo de ejecución), instalado a través de un repositorio especial, se proporcionan dependencias adicionales (paquete) necesarias para el funcionamiento de la aplicación. En total, el tiempo de ejecución y el paquete forman el relleno del contenedor, a pesar de que el tiempo de ejecución se instala por separado y se vincula a varios contenedores a la vez, lo que le permite evitar la duplicación de archivos del sistema comunes a los contenedores. Un sistema puede tener instalados varios tiempos de ejecución diferentes (GNOME, KDE) o varias versiones del mismo tiempo de ejecución (GNOME 3.40, GNOME 3.42). Un contenedor con una aplicación como dependencia utiliza un enlace solo a un tiempo de ejecución específico, sin tener en cuenta los paquetes individuales que componen el tiempo de ejecución. Todos los elementos que faltan se empaquetan directamente con la aplicación. Cuando se forma un contenedor, el contenido del tiempo de ejecución se monta como la partición /usr y el paquete se monta en el directorio /app.

Los contenedores de aplicaciones y tiempo de ejecución se construyen utilizando tecnología OSTree, en la que la imagen se actualiza atómicamente desde un repositorio similar a Git, lo que permite aplicar métodos de control de versiones a los componentes de distribución (por ejemplo, puede revertir rápidamente el sistema a un estado previo). Los paquetes RPM se traducen al repositorio OSTree utilizando una capa especial rpm-ostree. No se admite la instalación y actualización separada de paquetes dentro del entorno de trabajo; el sistema no se actualiza a nivel de componentes individuales, sino en su conjunto, cambiando atómicamente su estado. Proporciona herramientas para aplicar actualizaciones de forma incremental, eliminando la necesidad de reemplazar completamente la imagen con cada actualización.

El entorno aislado generado es completamente independiente de la distribución utilizada y, con la configuración adecuada del paquete, no tiene acceso a archivos y procesos del usuario o del sistema principal, no puede acceder directamente al equipo, con excepción de la salida vía DRI, y llamadas al subsistema de red. La organización de la salida y la entrada de gráficos se implementa mediante el protocolo Wayland o mediante el reenvío de socket X11. La interacción con el entorno externo se basa en el sistema de mensajería DBus y una API de Portals especial.

Para el aislamiento se utiliza la capa Bubblewrap y tecnologías tradicionales de virtualización de contenedores de Linux, basadas en el uso de cgroups, namespaces, Seccomp y SELinux. PulseAudio se utiliza para emitir sonido. En este caso, se puede desactivar el aislamiento, que utilizan los desarrolladores de muchos paquetes populares para obtener acceso completo al sistema de archivos y a todos los dispositivos del sistema. Por ejemplo, GIMP, VSCodium, PyCharm, Octave, Inkscape, Audacity y VLC vienen con un modo de aislamiento limitado que deja acceso completo al directorio de inicio.

Si los paquetes con acceso al directorio de inicio se ven comprometidos, a pesar de la presencia de la etiqueta "sandboxed" en la descripción del paquete, el atacante solo necesita cambiar el archivo ~/.bashrc para ejecutar su código. Un tema aparte es el control de los cambios en los paquetes y la confianza en los creadores de paquetes, que a menudo no están asociados con el proyecto o las distribuciones principales.

Fuente: opennet.ru

Añadir un comentario