Vulnérabilité dans firejail permettant un accès root au système

Une vulnérabilité (CVE-2022-31214) a été identifiée dans l'utilitaire d'isolation d'application Firejail qui permet à un utilisateur local d'obtenir les privilèges root sur le système hôte. Il existe un exploit fonctionnel disponible dans le domaine public, testé dans les versions actuelles d'openSUSE, Debian, Arch, Gentoo et Fedora avec l'utilitaire Firejail installé. Le problème est résolu dans la version Firejail 0.9.70. Pour contourner la protection, vous pouvez définir les paramètres « join no » et « force-nonewprivs yes » dans les paramètres (/etc/firejail/firejail.config).

Firejail utilise des espaces de noms, AppArmor et le filtrage des appels système (seccomp-bpf) sous Linux pour l'isolation, mais nécessite des privilèges élevés pour configurer une exécution isolée, qu'il obtient en se liant à l'utilitaire suid root ou en s'exécutant avec sudo. La vulnérabilité est causée par une erreur dans la logique de l'option « --join= ». ", destiné à se connecter à un environnement isolé déjà en cours d'exécution (analogue à la commande login pour un environnement sandbox) avec la définition de l'environnement par l'identifiant du processus qui s'y exécute. Pendant la phase de réinitialisation préalable aux privilèges, Firejail détermine les privilèges du processus spécifié et les applique au nouveau processus connecté à l'environnement à l'aide de l'option « -join ».

Avant de se connecter, il vérifie si le processus spécifié s'exécute dans l'environnement Firejail. Cette vérification évalue la présence du fichier /run/firejail/mnt/join. Pour exploiter cette vulnérabilité, un attaquant peut simuler un environnement Firejail fictif et non isolé à l'aide de l'espace de noms de montage, puis s'y connecter à l'aide de l'option « --join ». Si les paramètres n'activent pas le mode d'interdiction de l'acquisition de privilèges supplémentaires dans les nouveaux processus (prctl NO_NEW_PRIVS), Firejail connectera l'utilisateur à un environnement factice et tentera d'appliquer les paramètres d'espace de noms utilisateur du processus d'initialisation (PID 1).

En conséquence, le processus connecté via « firejail –join » se retrouvera dans l’espace de noms d’ID utilisateur d’origine de l’utilisateur avec des privilèges inchangés, mais dans un espace de point de montage différent, entièrement contrôlé par l’attaquant. Un attaquant peut également exécuter des programmes setuid-root dans l'espace de point de montage qu'il a créé, ce qui permet par exemple de modifier les paramètres /etc/sudoers ou PAM dans sa hiérarchie de fichiers et de pouvoir exécuter des commandes avec les droits root en utilisant sudo ou su utilitaires.

Source: opennet.ru

Ajouter un commentaire