nouvelle version de l'outil , conçu pour organiser le travail d'environnements isolés sous Linux et fonctionnant au niveau des applications pour les utilisateurs non privilégiés. En pratique, Bubblewrap est utilisé par le projet Flatpak comme couche d'isolation pour les applications lancées à partir de paquets. Le code du projet est écrit en C et sous licence LGPLv2+.
L'isolation utilise des technologies de virtualisation de conteneurs traditionnelles pour Linux, basées sur l'utilisation de cgroups, d'espaces de noms (namespaces), de Seccomp et de SELinux. Pour effectuer des opérations privilégiées de configuration du conteneur, Bubblewrap est lancé avec les droits root (fichier exécutable avec le drapeau suid) et les privilÚges sont ensuite réinitialisés aprÚs l'initialisation du conteneur.
L'activation dans le systĂšme d'espaces de noms d'identificateurs d'utilisateur (user namespaces), permettant d'utiliser dans les conteneurs un ensemble d'identificateurs distinct, n'est pas nĂ©cessaire pour le fonctionnement, car elle n'est pas activĂ©e par dĂ©faut dans de nombreuses distributions (Bubblewrap est positionnĂ© comme une implĂ©mentation suid limitĂ©e d'un sous-ensemble des possibilitĂ©s des user namespaces â pour exclure tous les identificateurs d'utilisateurs et de processus de l'environnement, Ă l'exception de celui en cours, les modes CLONE_NEWUSER et CLONE_NEWPID sont utilisĂ©s). Pour une protection supplĂ©mentaire, les programmes exĂ©cutĂ©s sous Bubblewrap sont lancĂ©s en mode PR_SET_NO_NEW_PRIVS, interdisant l'acquisition de nouveaux privilĂšges, par exemple, en prĂ©sence d'un drapeau setuid.
L'isolation au niveau du systĂšme de fichiers se fait par la crĂ©ation par dĂ©faut d'un nouvel espace de noms de points de montage (mount namespace), dans lequel un rĂ©pertoire racine vide est créé Ă l'aide de tmpfs. Des partitions de systĂšmes de fichiers externes peuvent ĂȘtre montĂ©es dans ce rĂ©pertoire en mode « mount âbind » si nĂ©cessaire (par exemple, lors du lancement avec l'option « bwrap âro-bind /usr /usr », la partition /usr est transfĂ©rĂ©e du systĂšme principal en mode lecture seule). Les capacitĂ©s rĂ©seau sont limitĂ©es Ă l'accĂšs Ă l'interface loopback avec l'isolation de la pile rĂ©seau via les drapeaux CLONE_NEWNET et CLONE_NEWUTS.
La principale distinction par rapport Ă un projet similaire
Firejail , qui utilise Ă©galement un modĂšle de lancement avec application de setuid, est que dans Bubblewrap, la couche de crĂ©ation de conteneurs inclut uniquement le minimum nĂ©cessaire de fonctionnalitĂ©s, tandis que toutes les fonctions Ă©tendues requises pour exĂ©cuter des applications graphiques, interagir avec le bureau et filtrer les requĂȘtes Ă Pulseaudio, sont dĂ©placĂ©es du cĂŽtĂ© de Flatpak et exĂ©cutĂ©es aprĂšs le retrait des privilĂšges. En revanche, Firejail regroupe toutes les fonctions associĂ©es dans un seul fichier exĂ©cutable, ce qui complique son audit et le maintien de la sĂ©curitĂ©. .
La nouvelle version se distingue par la mise en Ćuvre du support de la connexion d'espaces de noms d'identifiants d'utilisateurs (user namespaces) et de processus (pid namespaces). Des drapeaux tels que «âuserns», «âuserns2» et «âpidns» ont Ă©tĂ© ajoutĂ©s pour gĂ©rer la connexion des espaces de noms.
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 son activation.
les user namespaces dans le systÚme (désactivés par défaut dans Debian et RHEL/CentOS) et n'exclut pas la possibilité pour contourner les restrictions des «user namespaces». Parmi les nouvelles fonctionnalités de Bubblewrap 0.4, on note également la possibilité de compilation avec la bibliothÚque C musl au lieu de glibc et le support de la sauvegarde des informations sur les espaces de noms dans un fichier de statistiques au format JSON.
Source : opennet.ru
