AprÚs un an de développement, une nouvelle version de l'outil pour organiser le travail dans des environnements isolés, Bubblewrap 0.9, a été publiée. Cet outil est utilisé pour limiter les applications des utilisateurs non privilégiés. En pratique, Bubblewrap est appliqué par le projet Flatpak comme une couche d'isolation pour les applications lancées à partir de paquets. Le code du projet est écrit en langage C et est distribué sous la 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'identifiants d'utilisateur (user namespaces), permettant d'utiliser un ensemble distinct d'identifiants dans les conteneurs, n'est pas requise pour le fonctionnement, car par dĂ©faut, elle ne fonctionne pas sur de nombreuses distributions (Bubblewrap est positionnĂ© comme une implĂ©mentation suid limitĂ©e d'un sous-ensemble des fonctionnalitĂ©s des espaces de noms d'utilisateurs â pour exclure tous les identifiants d'utilisateurs et de processus de l'environnement, sauf pour le courant, 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 cas de prĂ©sence du drapeau setuid.
La principale distinction par rapport Ă un projet similaire
La distinction clé par rapport à un projet similaire, Firejail, qui utilise également un modÚle de démarrage avec application de setuid, est que dans Bubblewrap, la couche de création de conteneurs n'inclut que le minimum requis de fonctionnalités, tandis que toutes les fonctions avancées nécessaires au lancement d'applications graphiques, à l'interaction avec le bureau et à la filtration des appels à Pulseaudio, sont transférées à Flatpak et exécutées aprÚs que les privilÚges aient été réinitialisés. Firejail, quant à lui, regroupe toutes les fonctions associées dans un seul fichier exécutable, ce qui complique son audit et sa gestion de la sécurité.
Dans cette nouvelle version :
- Les fichiers générés dans Autotools ont été supprimés du paquet avec les sources. Il est désormais recommandé d'utiliser le systÚme de construction Meson. Le support optionnel d'Autotools est encore conservé, mais il est prévu de l'éliminer dans les futures versions.
- Une option « âargv0 » a Ă©tĂ© ajoutĂ©e pour dĂ©finir la valeur du premier argument de la ligne de commande (argv[0] â le nom du fichier exĂ©cutable, par exemple « âargv0 /usr/bin/test »).
- L'option « âsymlink » ne fonctionne dĂ©sormais que lorsque le lien symbolique existe dĂ©jĂ et pointe vers le fichier cible souhaitĂ©.
- L'option «âcap-add» est documentĂ©e, utilisĂ©e pour dĂ©finir des drapeaux de capacitĂ©, par exemple «CAP_DAC_READ_SEARCH».
- La clarté des messages d'erreur générés lors des échecs de montage a été améliorée.
- Le processus de création de tests unitaires a été simplifié.
- Le support des anciennes versions de Python a été abandonné dans les exemples d'utilisation.
- Les opérations de gestion de la mémoire ont été améliorées.
Source : opennet.ru
