Lanzamento de Bubblewrap 0.6, unha capa para crear ambientes illados

Está dispoñible unha versión de ferramentas para organizar o traballo en ambientes illados Bubblewrap 0.6, que normalmente se usa para restrinxir aplicacións individuais de usuarios sen privilexios. Na práctica, o proxecto Flatpak usa Bubblewrap como unha capa para illar as aplicacións lanzadas dos paquetes. O código do proxecto está escrito en C e distribúese baixo a licenza LGPLv2+.

Para o illamento, utilízanse tecnoloxías tradicionais de virtualización de contedores Linux, baseadas no uso de cgroups, espazos de nomes, Seccomp e SELinux. Para realizar operacións con privilexios para configurar un contedor, lánzase Bubblewrap con dereitos de root (un ficheiro executable cunha marca suid) e despois restablece os privilexios despois de inicializar o contedor.

A activación dos espazos de nomes de usuario no sistema de espazos de nomes, que lle permite utilizar o seu propio conxunto separado de identificadores nos contedores, non é necesaria para o seu funcionamento, xa que non funciona de forma predeterminada en moitas distribucións (Bubblewrap sitúase como unha implementación suid limitada dun subconxunto de capacidades de espazos de nomes de usuario: para excluír todos os identificadores de usuarios e procesos do contorno, excepto o actual, utilízanse os modos CLONE_NEWUSER e CLONE_NEWPID). Para unha protección adicional, os programas executados baixo Bubblewrap lánzanse no modo PR_SET_NO_NEW_PRIVS, que prohibe a adquisición de novos privilexios, por exemplo, se a bandeira setuid está presente.

O illamento a nivel do sistema de ficheiros realízase creando un novo espazo de nomes de montaxe por defecto, no que se crea unha partición raíz baleira mediante tmpfs. Se é necesario, as particións FS externas están anexadas a esta partición no modo "mount —bind" (por exemplo, cando se inicia coa opción "bwrap —ro-bind /usr /usr", a partición /usr envíase desde o sistema principal). en modo de só lectura). As capacidades de rede están limitadas ao acceso á interface de loopback con illamento da pila de rede mediante as marcas CLONE_NEWNET e CLONE_NEWUTS.

A diferenza fundamental co proxecto similar Firejail, que tamén utiliza o modelo de lanzamento setuid, é que en Bubblewrap a capa de creación de contedores inclúe só as capacidades mínimas necesarias e todas as funcións avanzadas necesarias para executar aplicacións gráficas, interactuar co escritorio e filtrar solicitudes. a Pulseaudio, transferido ao lado Flatpak e executado despois de restablecer os privilexios. Firejail, por outra banda, combina todas as funcións relacionadas nun ficheiro executable, o que dificulta a auditoría e o mantemento da seguridade no nivel axeitado.

Na nova versión:

  • Engadido soporte para o sistema de montaxe Meson. A compatibilidade para construír con Autotools mantívose polo momento, pero eliminarase nunha versión futura.
  • Implementouse a opción "--add-seccomp" para engadir máis dun programa seccomp. Engadiu un aviso de que se volve especificar a opción "--seccomp", só se aplicará o último parámetro.
  • A rama mestra do repositorio git foi renomeada a main.
  • Engadido soporte parcial para a especificación REUSE, que unifica o proceso de especificación da información de licenza e copyright. Moitos ficheiros de código teñen engadidos cabeceiras SPDX-License-Identifier. Seguir as directrices de REUSE fai máis doado determinar automaticamente que licenza se aplica a que partes do código da aplicación.
  • Engadiuse a comprobación do valor do contador de argumentos da liña de comandos (argc) e implementouse unha saída de emerxencia se o contador é cero. O cambio axuda a bloquear os problemas de seguridade causados ​​polo manexo incorrecto dos argumentos da liña de comandos pasados, como CVE-2021-4034 en Polkit.

Fonte: opennet.ru

Engadir un comentario