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

Hi ha disponible una versió d'eines per organitzar el treball d'entorns aïllats Bubblewrap 0.8, 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 l'opció "--disable-userns" per desactivar la creació del seu propi espai de noms d'usuari imbricat a l'entorn sandbox.
  • S'ha afegit l'opció "--assert-userns-disabled" per comprovar que s'utilitza un espai d'identificació d'usuari existent quan s'utilitza l'opció "--disable-userns".
  • S'ha augmentat el contingut d'informació dels missatges d'error relacionats amb la desactivació de la configuració CONFIG_SECCOMP i CONFIG_SECCOMP_FILTER al nucli.

Font: opennet.ru

Afegeix comentari