Lancé récemment par Edera, le projet open source Styrolite contrôle plus strictement les interactions entre les conteneurs et les namespaces du noyau Linux, en intervenant à un niveau qui se situe en dessous de la couche où opèrent les runtimes de l'Open Container Initiative (OCI) comme containerd. Ces dernières années, alors que des incidents de sécurité du cycle de développement des logiciels, comme Log4j et XZ Utils, ont fait les gros titres de la sécurité des conteneurs, le runtime des conteneurs reste une cible attractive pour les pirates. À l’aide d’exploits qui ciblent les sous-systèmes de bas niveau du noyau, comme Dirty Cow et Dirty Pipe, les attaquants parviennent à s'échapper des conteneurs et à élever leurs privilèges.
Grâce à l’outil de sandboxing programmable Styrolite créé par Ariadne Conill, cofondatrice et ingénieure d'Edera, les équipes d'ingénierie des plateformes peuvent « mettre en quarantaine » les interactions entre les conteneurs et les espaces de noms Linux. Le nom est tiré d'une substance dure et transparente utilisée pour isoler un patient de son environnement dans l’œuvre de science-fiction Star Trek Next Generation. « Historiquement, le moteur d'exécution des conteneurs a fourni de très mauvaises garanties d'isolation », a expliqué Mme Conill. « Nous en sommes arrivés à un point où les gens ne comprennent tout simplement pas comment ces composants s'assemblent et pensent que les espaces de noms fournissent une véritable isolation », a-t-elle ajouté. « Or, c'est impossible, car ils existent en tant que sous-ensemble de l'état partagé du noyau. »
Espaces de noms Linux glissants
Les namespaces Linux permettent aux conteneurs de se disputer les ressources sous-jacentes dans les environnements multi-locataires. Mais alors que le réconciliation entre le conteneur et Kubernetes a besoin d’une certaine flexibilité pour placer les charges de travail côte à côte sur différents hôtes Linux à travers les clusters, les espaces de noms Linux n'ont jamais été conçus pour servir de frontières de sécurité. C'est la raison pour laquelle les attaques et les évasions de conteneurs sont si fréquentes. « L’outil Styrolite est comme une interface d'exécution de conteneur (CRI), mais il se concentre sur les interactions réelles des conteneurs avec le noyau », a expliqué Mme Conill. « Styrolite se focalise sur la sécurisation des processus qui sont au cœur du montage des images dans les espaces de noms, et en particulier le chronométrage, les montages et les collections de processus dans l'espace de noms des identifiants de processus. »
En gérant le cycle de vie de ces interactions fondamentales avec l'espace de noms, Styrolite offre aux ingénieurs un contrôle beaucoup plus granulaire sur les interactions des ressources des conteneurs, par le biais de la configuration de leurs images de conteneurs. Écrit en Rust et conçu comme un microservice, Styrolite « comble le fossé entre le paradigme moderne du cloud et les techniques de sécurité traditionnelles comme la sécurité basée sur la virtualisation », a ajouté Mme Conill. « Nous avons fait en sorte que Styrolite se comporte de la même manière que les composants OCI », a-t-elle poursuivi. « Essentiellement, nous avons transformé la gestion du bac à sable de conteneur en un microservice approprié qui fait exactement la même chose que ce que fait Kubernetes quand il utilise l'IRC pour se connecter à containerd ou à d'autres implémentations de l'IRC. »
Exécution des conteneurs dans un bac à sable
Styrolite n’est pas le premier outil de sandboxing des runtimes de conteneurs. Bubblewrap est le plus connu, et ce projet de sandboxing de conteneurs de bas niveau est communément utilisé pour les constructions Fedora et RPM. « Ces outils sont soit de trop haut niveau (comme l'IRC de Kubernetes), soit il faut les utiliser via des scripts shell », a précisé Mme Conill. « Si avec les CLI, on peut itérer rapidement, nous voulions construire une interface programmatique riche pour le spawning et la gestion des conteneurs. »
Les développeurs et les professionnels de la sécurité habitués à Bubblewrap remarqueront immédiatement que Styrolite gère les configurations de sécurité différemment. « Bubblewrap est un outil très radical, dont l’interface de ligne de commande complexe va parfois trop vite et peut entrainer une escalade des privilèges des hôtes par inadvertance », a fait remarquer Mme Conill. « C'est en naviguant dans ces configurations d'exécution sans les garde-fous appropriés que l'on peut accidentellement accorder à des conteneurs un accès complet au répertoire racine d'un hôte, alors que l'on essayait simplement de passer par le partage de fichiers », a ajouté Mme Conill qui estime qu'une prise de conscience générale est en cours dans le domaine de la sécurité des conteneurs et que des outils comme Styrolite sont essentiels pour améliorer la configurabilité de la sécurité par défaut.
Commentaire