Lanzamento do sistema de paquetes autónomos Flatpak 1.12.0

Publicouse unha nova rama estable do kit de ferramentas Flatpak 1.12, que proporciona un sistema para construír paquetes autónomos que non estean vinculados a distribucións específicas de Linux e que se executan nun contedor especial que illa a aplicación do resto do sistema. O soporte para executar paquetes Flatpak ofrécese para Arch Linux, CentOS, Debian, Fedora, Gentoo, Mageia, Linux Mint, Alt Linux e Ubuntu. Os paquetes Flatpak están incluídos no repositorio de Fedora e son compatibles co xestor de aplicacións nativo de GNOME.

Innovacións clave na rama Flatpak 1.12:

  • Xestión mellorada dos ambientes sandbox anidados utilizados no paquete flatpak co cliente para o servizo de entrega de xogos de Steam. Nos sandbox anidados, permítese a creación de xerarquías separadas dos directorios /usr e /app, que se usa en Steam para lanzar xogos nun contedor separado coa súa propia partición /usr, illada do entorno co cliente de Steam.
  • Todas as instancias de paquetes co mesmo identificador de aplicación (app-ID) comparten os directorios /tmp e $XDG_RUNTIME_DIR. Opcionalmente, usando a marca "--allow=per-app-dev-shm", pode activar o uso do directorio compartido /dev/shm.
  • Compatibilidade mellorada para aplicacións de interface de usuario de texto (TUI) como gdb.
  • Engadiuse unha implementación máis rápida do comando "ostree prune" á utilidade build-update-repo, optimizada para traballar con repositorios en modo de arquivo.
  • Corrixiuse a vulnerabilidade CVE-2021-41133 na implementación do mecanismo do portal, asociada á falta de bloqueo de novas chamadas ao sistema relacionadas co montaxe de particións nas regras seccomp. A vulnerabilidade permitiu á aplicación crear un sandbox anidado para evitar os mecanismos de verificación do "portal" que se usan para organizar o acceso aos recursos fóra do contedor.

    Como resultado, un atacante, ao realizar chamadas ao sistema relacionadas co montaxe, podería evitar o mecanismo de illamento da caixa de probas e obter acceso total ao contido do ambiente host. A vulnerabilidade só se pode explotar en paquetes que proporcionan ás aplicacións acceso directo aos sockets AF_UNIX, como os utilizados por Wayland, Pipewire e pipewire-pulse. Na versión 1.12.0, a vulnerabilidade non se eliminou completamente, polo que a actualización 1.12.1 lanzouse inmediatamente.

Lembrámosche que Flatpak permite aos desenvolvedores de aplicacións simplificar a distribución dos seus programas que non están incluídos nos repositorios de distribución estándar preparando un contedor universal sen crear conxuntos separados para cada distribución. Para usuarios conscientes da seguridade, Flatpak permítelle executar unha aplicación cuestionable nun contedor, proporcionando acceso só ás funcións de rede e aos ficheiros de usuario asociados á aplicación. Para os usuarios interesados ​​en novos produtos, Flatpak permítelle instalar as versións de proba máis recentes e as versións estables de aplicacións sen necesidade de facer cambios no sistema. Por exemplo, os paquetes Flatpak están creados para LibreOffice, Midori, GIMP, Inkscape, Kdenlive, Steam, 0 AD, Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio, etc.

Para reducir o tamaño do paquete, inclúe só dependencias específicas da aplicación, e as bibliotecas básicas do sistema e de gráficos (librerías GTK, Qt, GNOME e KDE, etc.) están deseñadas como entornos de execución estándar de complementos. A diferenza fundamental entre Flatpak e Snap é que Snap usa os compoñentes do ambiente principal do sistema e o illamento baseado no filtrado de chamadas ao sistema, mentres que Flatpak crea un contedor separado do sistema e opera con grandes conxuntos de tempo de execución, proporcionando non paquetes como dependencias, senón estándar. os contornos do sistema (por exemplo, todas as bibliotecas necesarias para o funcionamento dos programas GNOME ou KDE).

Ademais do ambiente estándar do sistema (tempo de execución), instalado a través dun repositorio especial, ofrécense dependencias adicionais (paquete) necesarias para o funcionamento da aplicación. En total, o tempo de execución e o paquete forman o recheo do contedor, a pesar de que o tempo de execución está instalado por separado e está ligado a varios contedores á vez, o que permite evitar duplicar ficheiros do sistema comúns aos contedores. Un sistema pode ter instalados varios tempos de execución diferentes (GNOME, KDE) ou varias versións do mesmo tempo de execución (GNOME 3.40, GNOME 3.42). Un contedor cunha aplicación como dependencia só utiliza unha ligazón a un tempo de execución específico, sen ter en conta os paquetes individuais que constitúen o tempo de execución. Todos os elementos que faltan empaquetanse directamente coa aplicación. Cando se forma un contenedor, o contido do tempo de execución móntase como a partición /usr e o paquete móstrase no directorio /app.

O tempo de execución e os contedores das aplicacións constrúense mediante a tecnoloxía OSTree, na que a imaxe se actualiza atómicamente desde un repositorio tipo Git, o que permite aplicar métodos de control de versións aos compoñentes da distribución (por exemplo, podes revertir rapidamente o sistema a un estado anterior). Os paquetes RPM tradúcense ao repositorio OSTree mediante unha capa especial rpm-ostree. Non se admite a instalación e actualización separada de paquetes dentro do contorno de traballo; o sistema non se actualiza a nivel de compoñentes individuais, senón no seu conxunto, cambiando atómicamente o seu estado. Ofrece ferramentas para aplicar actualizacións de forma incremental, eliminando a necesidade de substituír completamente a imaxe con cada actualización.

O contorno illado xerado é completamente independente da distribución utilizada e, cunha configuración adecuada do paquete, non ten acceso aos ficheiros e procesos do usuario ou do sistema principal, non pode acceder directamente ao equipo, a excepción da saída a través de DRI, e chamadas ao subsistema de rede. A organización de saída e entrada de gráficos impléntanse mediante o protocolo Wayland ou mediante o reenvío de socket X11. A interacción co entorno externo baséase no sistema de mensaxería DBus e nunha API de portais especial.

Para o illamento, utilízanse a capa Bubblewrap e as tecnoloxías tradicionais de virtualización de contedores Linux, baseadas no uso de cgroups, espazos de nomes, Seccomp e SELinux. PulseAudio úsase para emitir son. Neste caso, pódese desactivar o illamento, que é usado polos desenvolvedores de moitos paquetes populares para ter acceso total ao sistema de ficheiros e a todos os dispositivos do sistema. Por exemplo, GIMP, VSCodium, PyCharm, Octave, Inkscape, Audacity e VLC inclúen un modo de illamento limitado que deixa acceso total ao directorio de inicio.

Se os paquetes con acceso ao directorio de inicio están comprometidos, a pesar da presenza da etiqueta "sandbox" na descrición do paquete, o atacante só necesita cambiar o ficheiro ~/.bashrc para executar o seu código. Unha cuestión aparte é o control dos cambios nos paquetes e a confianza nos creadores de paquetes, que moitas veces non están asociados co proxecto ou distribucións principais.

Fonte: opennet.ru

Engadir un comentario