nouvelle version de la boîte à outils , conçu pour organiser le travail d'environnements isolés sous Linux et fonctionnant au niveau applicatif d'utilisateurs non privilégiés. En pratique, Bubblewrap est utilisé par le projet Flatpak comme couche pour isoler les applications lancées à partir des packages. Le code du projet est écrit en C et sous licence LGPLv2+.
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.
L'activation des espaces de noms utilisateur dans le système d'espaces de noms, qui vous permet d'utiliser votre propre ensemble distinct d'identifiants dans les conteneurs, n'est pas requise pour le fonctionnement, car elle ne fonctionne pas par défaut dans de nombreuses distributions (Bubblewrap est positionné comme une implémentation suid limitée d'un sous-ensemble de capacités d'espaces de noms d'utilisateurs - pour exclure tous les identifiants d'utilisateurs et de processus de l'environnement, à l'exception de celui actuel, les modes CLONE_NEWUSER et CLONE_NEWPID sont utilisés). Pour une protection supplémentaire, exécutable sous contrôle
Les programmes Bubblewrap sont lancés en mode PR_SET_NO_NEW_PRIVS, ce qui interdit d'obtenir de nouveaux privilèges, par exemple si le flag setuid est présent.
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 , qui utilise également un modèle de lancement setuid, est que dans Bubblewrap, la couche de création de conteneurs n'inclut que les capacités minimales nécessaires, et toutes les fonctions avancées requises pour exécuter des applications graphiques, interagir avec le bureau et filtrer les appels à Pulseaudio sont externalisées par Flatpak et sont exécutées une fois les privilèges réinitialisés. Firejail, en revanche, combine toutes les fonctions associées dans un seul fichier exécutable, ce qui rend difficile l'audit et le maintien de la sécurité sur .
La nouvelle version se distingue par la mise en œuvre de la prise en charge de la jonction des espaces de noms d'utilisateurs existants et des espaces de noms de processus pid. Pour contrôler la connexion des espaces de noms, les indicateurs « --userns », « --userns2 » et « -pidns » ont été ajoutés.
Cette fonctionnalité ne fonctionne pas en mode setuid et nécessite l'utilisation d'un mode distinct, qui peut fonctionner sans obtenir les droits root, mais nécessite une activation
espaces de noms utilisateur sur le système (désactivés par défaut sur Debian et RHEL/CentOS) et n'exclut pas la possibilité pour le bord des restrictions "espaces de noms d'utilisateurs". Les nouvelles fonctionnalités de Bubblewrap 0.4 incluent également la possibilité de construire avec la bibliothèque musl C au lieu de la glibc et la prise en charge de l'enregistrement des informations sur l'espace de noms dans un fichier avec des statistiques au format JSON.
Source: opennet.ru
