Lanzamento de Bubblewrap 0.8, unha capa para crear ambientes illados

Está dispoñible unha versión de ferramentas para organizar o traballo en ambientes illados Bubblewrap 0.8, 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:

  • Engadiuse a opción "--disable-userns" para desactivar a creación do seu propio espazo de nomes de usuario anidado no entorno sandbox.
  • Engadiuse a opción "--assert-userns-disabled" para comprobar que se usa un espazo de ID de usuario existente ao usar a opción "--disable-userns".
  • Incrementouse o contido de información das mensaxes de erro relacionadas coa desactivación das opcións CONFIG_SECCOMP e CONFIG_SECCOMP_FILTER no núcleo.

Fonte: opennet.ru

Engadir un comentario