La version 0.9.78 du projet Firejail a été publiée, développant un système pour l'exécution isolée d'applications graphiques, en console et serveurs, permettant 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 la licence GPLv2 et peut fonctionner sur n'importe quelle distribution Linux avec un noyau supérieur à 3.0. Des paquets prêts à l'emploi pour 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 d'isolement en conteneur, 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 à partir du contenu du système de fichiers actuel et est supprimé après l'exécution de l'application. Des outils flexibles permettent de définir des règles d'accès au système de fichiers, permettant de déterminer quels fichiers et répertoires sont accessibles ou interdits, d'attacher des systèmes de fichiers temporaires (tmpfs) pour les données, de limiter l'accès aux fichiers ou répertoires en lecture seule, et de combiner des répertoires via 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 :
- Le fichier de configuration firejail.config a été mis à jour avec les options arg-max-count, arg-max-len, env-max-count et env-max-len pour modifier les limites du nombre et de la taille des options de ligne de commande et des variables d'environnement. Par défaut, le nombre d'arguments est limité à 128, le nombre de variables d'environnement à 256 et la taille de chaque argument est fixée à PATH_MAX de limits.h (dans Linux 40196) + 32.
- Une option « —xephyr-extra-params » a été ajoutée pour spécifier des options supplémentaires pour Xephyr (utilisé pour créer des environnements sandbox X11 avec son propre serveur X exécuté dans une fenêtre) en ligne de commande sans modifier firejail.config.
- L'outil bwrap (bubblewrap) utilisé dans l'environnement sandbox a été remplacé par la couche fbwrap, qui exécute des programmes sans isolation pour résoudre les problèmes de lancement de Firefox, Thunderbird, GIMP en raison de l'appel de glycin 2.0.0 depuis gdk-pixbuf2 utilisant bwrap. Pour copier bwrap au lieu de la couche, l'option « —allow-bwrap » a été ajoutée.
- Les tables des appels système pour seccomp ont été mises à jour. De nouveaux appels système, tels que epoll_pwait2 et futex_wait, ont été ajoutés.
- L'option de compilation « —disable-globalcfg » a été supprimée, le support de overlayfs (« —overlay ») et du mode IDS (Intrusion Detection System, « —ids ») a été arrêté.
- Des profils d'isolation ont été ajoutés pour l'éditeur de texte ne, le navigateur Trivalent et les moteurs de jeux OpenRA, quakespasm, gzdoom, lzdoom, uzdoom.
- Les profils pour thunderbird, wine, qutebrowser, firefox, godot, wusc, mullvad-browser, blink, steam, ssh, brave et hashcat ont été mis à jour.
Source : opennet.ru
