Le projet Landrun a commencé le développement d'un nouveau système pour l'exécution isolée d'applications individuelles. Pour l'isolement, il utilise le module LSM du noyau Linux Landlock, permettant d'éviter l'exécution d'opérations privilégiées lors de la création d'un environnement sandbox. Par ses fonctionnalités, Landrun est similaire à l'outil Firejail, mais se distingue par une mise en œuvre plus simple, sa légèreté et la possibilité de fonctionner sous un utilisateur non privilégié sans avoir besoin d'être exécuté avec le drapeau suid. Le code du projet est écrit en Go et est distribué sous la licence GPLv2.
Le mécanisme Landlock permet aux programmes non privilégiés de limiter l'utilisation des objets du noyau Linux, tels que les hiérarchies de fichiers, les sockets réseau et ioctl. Contrairement aux espaces de noms et au filtrage des appels système, l'environnement isolé est créé par le noyau Linux sous la forme d'une couche supplémentaire au-dessus des mécanismes de contrôle d'accès existants. Pour interagir avec le sous-système Landlock, l'outil landrun utilise la bibliothèque go-landlock des développeurs de LandLock.
Landrun permet de réduire le risque de compromission du système principal lors de l'exécution de programmes peu fiables ou potentiellement vulnérables. Parmi ses fonctionnalités, on note le support de la limitation d'accès sélective au niveau de répertoires individuels, l'association des privilèges aux chemins de fichiers (autorisation ou interdiction de lecture, d'écriture et d'exécution) et le contrôle des initiations et des réceptions de connexions TCP.
Par exemple, à l'aide de Landrun, il est possible d'interdire à un processus l'exécution de fichiers exécutables, d'autoriser l'écriture uniquement dans un sous-répertoire spécifique avec des données, d'interdire la création de sockets à l'écoute pour recevoir des connexions réseau et d'autoriser l'envoi de requêtes réseau uniquement vers des ports TCP spécifiés. Dans le cas le plus simple, pour interdire l'écriture, l'exécution et les capacités réseau, le programme peut être exécuté avec la commande « landrun —ro \/ », et pour isoler nginx, on peut utiliser : landrun —rox \/usr\/bin —ro \/lib,\/lib64,\/var\/www —rwx \/var\/log —bind-tcp 80,443 \/usr\/bin\/nginx.
Les projets futurs mentionnent une gestion avancée des accès au système de fichiers, le support de l'UDP et la gestion des ressources des processus. Pour restreindre l'accès au niveau du système de fichiers, un noyau Linux d'au moins 5.13 est requis, tandis que pour les limitations réseau, il faut une version 6.8.
Il convient également de noter que des modifications ont été apportées à la base de code de Firejail, permettant d'utiliser la sous-système du noyau Landlock pour l'isolation sans le bit suid ni l'élévation des privilèges, mais la version avec ce support n'a pas encore été publiée.
Source : opennet.ru
