La version 0.9.72 du projet Firejail, qui développe un système d'exécution isolée pour les applications graphiques, console et serveur, a été publiée. Ce système permet de minimiser le risque de compromission du système principal lors de l'exécution de programmes peu fiables ou potentiellement vulnérables. Le programme est écrit en C, distribué sous licence GPLv2 et peut fonctionner sur toute distribution Linux avec un noyau supérieur à 3.0. Des paquets prêts à l'emploi de Firejail sont disponibles au format deb (Debian, Ubuntu) et rpm (CentOS, Fedora).
Pour l'isolement dans Firejail, des espaces de noms (namespaces), AppArmor et la filtration des appels système (seccomp-bpf) dans Linux sont utilisés. Après son lancement, le programme et tous ses processus enfants utilisent des vues distinctes des ressources du noyau, telles que la pile réseau, la table des processus et les points de montage. Les applications interconnectées peuvent être regroupées dans un sandbox commun. Si souhaité, Firejail peut également être utilisé pour exécuter des conteneurs Docker, LXC et OpenVZ.
Contrairement aux outils de conteneurisation, Firejail est extrêmement simple à configurer et ne nécessite pas de préparation d'image système — le contenu du conteneur est formé à la volée sur la base du contenu du système de fichiers actuel et est supprimé après l'exécution de l'application. Des moyens flexibles sont fournis pour définir les règles d'accès au système de fichiers, permettant de spécifier quels fichiers et répertoires sont accessibles ou non, de connecter des systèmes de fichiers temporaires (tmpfs) pour les données, de restreindre l'accès à des fichiers ou répertoires en lecture seule, et de fusionner des répertoires par bind-mount et overlayfs.
Pour de nombreuses applications populaires, y compris Firefox, Chromium, VLC et Transmission, des profils d'isolement des appels système ont été préparés. Pour obtenir les privilèges nécessaires à la configuration d'un environnement isolé, le fichier exécutable firejail est installé avec le flag SUID root (après initialisation, les privilèges sont réinitialisés). Pour exécuter le programme en mode d'isolement, il suffit d'indiquer le nom de l'application comme argument de l'outil firejail, par exemple, «firejail firefox» ou «sudo firejail /etc/init.d/nginx start».
Dans cette nouvelle version :
- Un filtre seccomp pour les appels système a été ajouté, bloquant la création d'espaces de noms (une option « —restrict-namespaces » a été ajoutée pour l'activer). Les tables des appels système et le groupe seccomp ont été mis à jour.
- Le mode force-nonewprivs (NO_NEW_PRIVS), interdisant l'obtention de privilèges supplémentaires dans de nouveaux processus, a été amélioré.
- La possibilité d'utiliser ses propres profils AppArmor a été ajoutée (une option « —apparmor » a été proposée pour les activer).
- Dans le système de suivi du trafic réseau nettrace, qui affiche des informations sur l'IP et l'intensité du trafic de chaque adresse, le support ICMP a été implémenté et les options « —dnstrace », « —icmptrace » et « —snitrace » ont été proposées.
- Les commandes —cgroup et —shell ont été supprimées (par défaut, —shell=none est appliqué). La construction de firetunnel a été arrêtée par défaut. Les paramètres chroot, private-lib et tracelog dans /etc/firejail/firejail.config ont été désactivés. Le support de grsecurity a été interrompu.
Source : opennet.ru
