Sortie de Bubblewrap 0.6, une couche de création d'environnements isolés

La version d'outils pour organiser le travail des environnements isolés Bubblewrap 0.6 est disponible, généralement utilisée pour restreindre les applications individuelles des 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 est distribué 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, les programmes exécutés sous Bubblewrap sont lancés en mode PR_SET_NO_NEW_PRIVS, ce qui interdit l'acquisition 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.

La principale différence avec le projet similaire Firejail, qui utilise également le 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 nécessaires à l'exécution d'applications graphiques, à l'interaction avec le bureau et au filtrage des requêtes. vers Pulseaudio, transféré du côté Flatpak et exécuté après la réinitialisation des privilèges. 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é au niveau approprié.

Dans la nouvelle version :

  • Добавлена поддержка сборочной системы Meson. Поддержка сборки при помощи Autotools пока сохранена, но будет удалена в одном из следующих выпусков.
  • Реализована опция «—add-seccomp» для добавления более чем одной программы seccomp. Добавлено предупреждение о том, что при повторном указании опции «—seccomp» будет применён только последний параметр.
  • Ветка master в git-репозитории переименована в main.
  • Добавлена частичная поддержка спецификации REUSE, унифицирующей процесс указания сведений о лицензиях и авторских правах. Во многие файлы с кодом добавлены заголовки SPDX-License-Identifier. Следование рекомендациям REUSE позволяет упростить автоматическое определение какая лицензия применяется к каким из частей кода приложения.
  • Добавлена проверка значения счётчика аргументов командной строки (argc) и реализован экстренный выход в случае если счётчик равен нулю. Изменение позволяет блокировать проблемы с безопасностью, вызванные некорректной обработкой передаваемых аргументов командной строки, такие как CVE-2021-4034 в Polkit.

Source: opennet.ru

Ajouter un commentaire