Llançament de Bubblewrap 0.6, una capa per crear entorns aïllats

Hi ha disponible una versió d'eines per organitzar el treball d'entorns aïllats Bubblewrap 0.6, que normalment s'utilitza per restringir aplicacions individuals d'usuaris sense privilegis. A la pràctica, el projecte Flatpak utilitza Bubblewrap com a capa per aïllar les aplicacions llançades dels paquets. El codi del projecte està escrit en C i es distribueix sota la llicència LGPLv2+.

Per aïllar-se, s'utilitzen tecnologies tradicionals de virtualització de contenidors de Linux, basades en l'ús de cgroups, espais de noms, Seccomp i SELinux. Per dur a terme operacions amb privilegis per configurar un contenidor, Bubblewrap s'inicia amb drets d'arrel (un fitxer executable amb un indicador suid) i després restableix els privilegis un cop inicialitzat el contenidor.

L'activació dels espais de noms d'usuari al sistema d'espais de noms, que us permet utilitzar el vostre propi conjunt separat d'identificadors als contenidors, no és necessària per al funcionament, ja que no funciona de manera predeterminada en moltes distribucions (Bubblewrap es posiciona com una implementació suau limitada d'un subconjunt de capacitats d'espais de noms d'usuari: per excloure tots els identificadors d'usuari i de procés de l'entorn, excepte l'actual, s'utilitzen els modes CLONE_NEWUSER i CLONE_NEWPID). Per a una protecció addicional, els programes executats sota Bubblewrap s'inicien en el mode PR_SET_NO_NEW_PRIVS, que prohibeix l'adquisició de nous privilegis, per exemple, si el senyalador setuid està present.

L'aïllament al nivell del sistema de fitxers s'aconsegueix creant un nou espai de noms de muntatge per defecte, en el qual es crea una partició arrel buida mitjançant tmpfs. Si cal, les particions externes FS s'adjunten a aquesta partició en el mode "muntatge —bind" (per exemple, quan s'inicia amb l'opció "bwrap —ro-bind /usr /usr", la partició /usr es reenvia des del sistema principal). en mode de només lectura). Les capacitats de xarxa es limiten a l'accés a la interfície de loopback amb aïllament de la pila de xarxa mitjançant els indicadors CLONE_NEWNET i CLONE_NEWUTS.

La diferència clau amb el projecte similar Firejail, que també utilitza el model de llançament setuid, és que a Bubblewrap la capa de creació de contenidors inclou només les capacitats mínimes necessàries i totes les funcions avançades necessàries per executar aplicacions gràfiques, interactuar amb l'escriptori i filtrar les sol·licituds. a Pulseaudio, transferit al costat de Flatpak i executat després de restablir els privilegis. Firejail, d'altra banda, combina totes les funcions relacionades en un fitxer executable, cosa que dificulta l'auditoria i el manteniment de la seguretat al nivell adequat.

A la nova versió:

  • S'ha afegit suport per al sistema de muntatge Meson. El suport per a la creació amb Autotools s'ha mantingut de moment, però s'eliminarà en una versió futura.
  • S'ha implementat l'opció "--add-seccomp" per afegir més d'un programa seccomp. S'ha afegit un avís que si torneu a especificar l'opció "--seccomp", només s'aplicarà l'últim paràmetre.
  • La branca mestra del repositori git s'ha reanomenat principal.
  • S'ha afegit suport parcial per a l'especificació REUSE, que unifica el procés d'especificació de la informació de llicència i copyright. Molts fitxers de codi tenen capçaleres SPDX-License-Identifier afegits. Seguir les directrius de REUTILITZACIÓ fa que sigui més fàcil determinar automàticament quina llicència s'aplica a quines parts del codi de l'aplicació.
  • S'ha afegit la comprovació del valor del comptador d'arguments de la línia d'ordres (argc) i s'ha implementat una sortida d'emergència si el comptador és zero. El canvi ajuda a bloquejar els problemes de seguretat causats per un maneig incorrecte dels arguments de la línia d'ordres passats, com ara CVE-2021-4034 a Polkit.

Font: opennet.ru

Afegeix comentari