Pour l'isolation, les technologies traditionnelles de virtualisation de conteneurs Linux sont utilisées, basées sur l'utilisation de groupes de contrôle, d'espaces de noms, Seccomp et SELinux. Pour effectuer des opérations privilégiées pour configurer un conteneur, Bubblewrap est lancé avec les droits root (un fichier exécutable avec un indicateur suid) puis réinitialise les privilèges après l'initialisation du conteneur.
Активация в системе пространств имён идентификаторов пользователя (user namespaces), позволяющих использовать в контейнерах собственный отдельный набор идентификаторов, для работы не требуется, так как по умолчанию не работает во многих дистрибутивах (Bubblewrap позиционируется как ограниченная suid-реализация подмножества возможностей user namespaces — для исключения всех идентификаторов пользователей и процессов из окружения, кроме текущего, используются режимы CLONE_NEWUSER и CLONE_NEWPID). Для дополнительной защиты исполняемые под управлением
Bubblewrap программы запускаются в режиме PR_SET_NO_NEW_PRIVS, запрещающем получение новых привилегий, например, при наличии флага setuid.
L'isolation au niveau du système de fichiers est réalisée en créant par défaut un nouvel espace de noms de montage, dans lequel une partition racine vide est créée à l'aide de tmpfs. Si nécessaire, des partitions FS externes sont attachées à cette partition en mode « mount —bind » (par exemple, lorsqu'elle est lancée avec l'option « bwrap —ro-bind /usr /usr », la partition /usr est transférée depuis le système principal en mode lecture seule). Les capacités réseau sont limitées à l'accès à l'interface de bouclage avec isolation de la pile réseau via les indicateurs CLONE_NEWNET et CLONE_NEWUTS.
Différence clé par rapport à un projet similaire
Новый выпуск примечателен реализацией поддержки присоединения существующих пространств имён идентификаторов пользователей (user namespaces) и процессов (pid namespaces). Для управления подключением пространств имён добавлены флаги «—userns», «—userns2» и «—pidns».
Данная возможность не работает в режиме setuid и требует применения отдельного режима, который может работать без получения прав root, но требует активации
user namespaces в системе (по умолчанию отключены в Debian и RHEL/CentOS) и не исключает возможность
Source: opennet.ru