Bubblewrap, un outil de création d'applications dans des environnements isolés

Bubblewrap est un outil qui sert pour organiser le travail de sandbox sous Linux et courir au niveau applicatif des utilisateurs non privilégiés. En pratique, Bubblewrap est utilisé par le projet Flatpak comme couche intermédiaire pour isoler les applications lancées à partir de progiciels.

Pour l'isolation, Linux utilise des technologies de virtualisation de conteneurs traditionnels basés 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 démarré avec les privilèges root (un fichier exécutable avec un indicateur suid), suivi d'une réinitialisation des privilèges après l'initialisation du conteneur.

Il n'est pas nécessaire d'activer les espaces de noms utilisateur sur le système, ce qui vous permet d'utiliser votre propre ensemble d'identifiants dans les conteneurs, car par défaut, cela ne fonctionne pas sur de nombreuses distributions.

À propos de Bubblewrap

Bubblewrap se positionne comme une implémentation suida limitée du sous-ensemble des fonctions d'espace de noms utilisateur pour exclure tous les identifiants d'utilisateur et de processus de l'environnement à l'exception de celui en cours, utilisez les modes CLONE_NEWUSER et CLONE_NEWPID.

Pour une protection supplémentaire, les programmes exécutés dans Bubblewrap démarrent en mode PR_SET_NO_NEW_PRIVS, qui interdit de nouveaux privilèges, par exemple, avec l'indicateur setuid.

L'isolement au niveau du système de fichiers se fait 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, les sections FS externes sont jointes à cette section dans le «monter – lier»(Par exemple, en commençant par l'option«bwrap –ro-bind / usr / usr', La section / usr est transmise depuis l'hôte en mode lecture seule).

Les capacités du réseau sont limitées pour accéder à l'interface de bouclage inversé avec isolation de la pile réseau via des indicateurs CLONE_NEWNET et CLONE_NEWUTS.

La principale différence avec le projet Firejail similaire, qui utilise également le lanceur setuid, est celui de Bubblewrap, la couche conteneur comprend uniquement les fonctionnalités minimales nécessaires et toutes les fonctions avancées requises pour lancer des applications graphiques, interagir avec le bureau et filtrer les appels à Pulseaudio, sont amenées du côté de Flatpak et exécutées après la réinitialisation des privilèges.

Firejail, d'autre part, combine toutes les fonctions associées dans un seul fichier exécutable, compliquant votre audit et en maintenant la sécurité au bon niveau.

Bubblewrap fonctionne essentiellement par création d'un espace de noms de montage vide sur un système de fichiers temporaire qui sera détruit une fois le traitement du bac à sable terminé.

Grâce à l'utilisation de commutateurs, l'utilisateur peut créer l'environnement de système de fichiers souhaité dans l'espace de noms de montage en le montant sur le lien des répertoires souhaités à partir du système hôte.

Papier à bulles 0.4.0

Bubblewrap est actuellement dans sa version 0.4.0 qui a été publié récemment. Le code du projet est écrit en C et distribué sous la licence LGPLv2 +.

La nouvelle version se distingue par la mise en œuvre de la prise en charge de la jonction des espaces de noms et des processus utilisateurs existants (espaces de noms pid).

Les indicateurs «–userns», «–userns2» et «–pidns» ont été ajoutés pour contrôler la connexion des espaces de noms.

Cette fonctionnalité ne fonctionne pas en mode setuid et nécessite un mode séparé qui peut fonctionner sans privilèges root, mais nécessite que les espaces de noms utilisateur soient activés sur le système (désactivé par défaut sur Debian et RHEL / CentOS) et n'exclut pas la possibilité pour exploiter les vulnérabilités potentiellement restantes à la limite des restrictions des «espaces de noms d'utilisateurs».

Parmi les nouvelles fonctionnalités de Bubblewrap 0.4, la possibilité de construire avec la bibliothèque musl C au lieu de la glibc est également observée, et la prise en charge de l'enregistrement des informations d'espace de noms dans un fichier de statistiques au format JSON.

Le code Bubblewrap, ainsi que la documentation le concernant, peuvent être consultés sur Github, le lien est celui-ci.


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.