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ó:

  • Добавлена поддержка сборочной системы Meson. Поддержка сборки при помощи Autotools пока сохранена, но будет удалена в одном из следующих выпусков.
  • Реализована опция «—add-seccomp» для добавления более чем одной программы seccomp. Добавлено предупреждение о том, что при повторном указании опции «—seccomp» будет применён только последний параметр.
  • Ветка master в git-репозитории переименована в main.
  • Добавлена частичная поддержка спецификации REUSE, унифицирующей процесс указания сведений о лицензиях и авторских правах. Во многие файлы с кодом добавлены заголовки SPDX-License-Identifier. Следование рекомендациям REUSE позволяет упростить автоматическое определение какая лицензия применяется к каким из частей кода приложения.
  • Добавлена проверка значения счётчика аргументов командной строки (argc) и реализован экстренный выход в случае если счётчик равен нулю. Изменение позволяет блокировать проблемы с безопасностью, вызванные некорректной обработкой передаваемых аргументов командной строки, такие как CVE-2021-4034 в Polkit.

Font: opennet.ru

Afegeix comentari