Virtualization is a technique that allows multiple instances typically running different guest operating systems on top of single physical hardware. A hypervisor, a layer of software running on top of the host operating system, typically runs and manages these different guest operating systems. Rather than to run different services on different servers for reliability and security reasons, companies started to employ virtualization over their servers to run these services within a single server. This approach proves beneficial to the companies as it provides much better reliability, stronger isolation, improved security and resource utilization compared to running services on multiple servers. Although hypervisor based virtualization offers better resource utilization and stronger isolation, it also suffers from high overhead as the host operating system has to maintain different guest operating systems.
To tackle this issue, another form of virtualization known as Operating System-level virtualization has emerged. This virtualization provides light-weight, minimal and efficient virtualization, as the different instances are run on top of the same host operating system, sharing the resources of the host operating system. But due to instances sharing the same host operating system affects the isolation of the instances. In this paper, we will first establish the basic concepts of virtualization and point out the differences between the hyper-visor based virtualization and operating system-level virtualization. Next, we will discuss the container creation life-cycle which helps in forming a container threat model for the container systems, which allows to map different potential attack vectors within these systems. Finally, we will discuss a case study, which further looks at isolation provided by the containers.
academic
Analyse de la Sécurité dans la Virtualisation au Niveau du Système d'Exploitation
La technologie de virtualisation permet d'exécuter plusieurs instances, généralement avec différents systèmes d'exploitation invités, sur un seul matériel physique. Bien que la virtualisation basée sur hyperviseur offre une meilleure utilisation des ressources et une isolation plus forte, elle présente des problèmes de surcharge élevée en raison de la nécessité pour le système d'exploitation hôte de maintenir différents systèmes d'exploitation invités. Pour résoudre ce problème, la virtualisation au niveau du système d'exploitation a émergé, offrant une virtualisation légère, minimale et efficace, mais au détriment de l'isolation entre instances en raison du partage du même système d'exploitation hôte. Cet article établit les concepts fondamentaux de la virtualisation, analyse les différences entre la virtualisation basée sur hyperviseur et la virtualisation au niveau du système d'exploitation, discute du cycle de vie de création des conteneurs, construit un modèle de menaces pour les conteneurs, et analyse l'isolation fournie par les conteneurs à travers des études de cas.
Problème d'efficacité de l'utilisation des ressources : Le déploiement traditionnel de différents services sur différents serveurs, bien qu'améliorant la fiabilité et la sécurité, est coûteux et offre une faible utilisation des ressources
Problème de surcharge de virtualisation : Bien que la virtualisation basée sur hyperviseur améliore l'utilisation des ressources, la maintenance de plusieurs systèmes d'exploitation invités entraîne une surcharge élevée
Problème d'isolation de sécurité des conteneurs : Bien que la virtualisation au niveau du système d'exploitation résolve le problème de surcharge, le partage du noyau du système d'exploitation peut affecter l'isolation de sécurité
Virtualisation traditionnelle : La virtualisation basée sur hyperviseur a une surcharge importante, chaque machine virtuelle nécessitant un système d'exploitation invité complet
Analyse de sécurité insuffisante : L'analyse de la sécurité et de l'isolation de la virtualisation au niveau du système d'exploitation n'est pas suffisamment approfondie
Modèle de menaces manquant : Absence d'un modèle de menaces systématique pour les conteneurs afin d'identifier les vecteurs d'attaque potentiels
Établissement d'un cadre comparatif de technologie de virtualisation : Comparaison systématique des avantages et inconvénients de la virtualisation basée sur hyperviseur et de la virtualisation au niveau du système d'exploitation
Construction d'un modèle détaillé du cycle de vie de création des conteneurs : Analyse du processus complet des conteneurs Docker de la construction à l'exécution
Proposition d'un modèle de menaces complet pour les conteneurs : Identification et classification de 9 catégories principales de vecteurs d'attaque dans les systèmes de conteneurs
Fourniture d'analyses de cas de vulnérabilités réelles : Analyse approfondie des problèmes de sécurité à travers deux vulnérabilités réelles : CVE-2024-21626 et CVE-2022-0847
Fourniture de recommandations de renforcement de la sécurité des conteneurs : Proposition de meilleures pratiques de sécurité pratiques basées sur les résultats de l'analyse
Cette recherche vise à analyser systématiquement la sécurité et l'isolation de la virtualisation au niveau du système d'exploitation (en particulier les conteneurs Docker), à identifier les vecteurs d'attaque potentiels par la construction d'un modèle de menaces, et à fournir des recommandations de renforcement de la sécurité.
La recherche se concentre sur quatre composants principaux du système de conteneurs Docker :
Docker Engine : Technologie de conteneurisation open-source fournissant la capacité de construire et de conteneuriser les applications
Docker Daemon (dockerd) : Processus s'exécutant en arrière-plan, écoutant les commandes Docker, servant d'interface entre l'interface de ligne de commande et le runtime de conteneur
Containerd : Système de runtime de conteneur de haut niveau fournissant la gestion du transport d'images, la gestion du cycle de vie des conteneurs, le stockage et les fonctionnalités réseau
Runc : Runtime de conteneur de bas niveau léger et sécurisé interagissant directement avec le système d'exploitation sous-jacent
Attaques externes : Accès à distance au système de conteneurs via le réseau
Attaques internes : Attaquant déjà dans le conteneur en tant qu'utilisateur lançant l'attaque
Manipulation d'images de référentiel : L'attaquant modifie les images de conteneurs dans le référentiel
Vulnérabilités du code d'application : Exploitation de vulnérabilités dans le code d'application et les dépendances tierces
Configuration inadéquate de l'image de conteneur : Octroi de permissions inutiles excessives lors de la configuration de l'image
Configuration inadéquate du conteneur : Extraction d'images contenant du code malveillant à partir de répertoires publics
Vulnérabilités de l'hôte : Exploitation de vulnérabilités du système d'exploitation hôte exécutant les conteneurs
Transmission d'informations intra-système : L'attaquant surveille le partage d'informations entre conteneurs
Vulnérabilités d'échappement de conteneur : Exploitation de vulnérabilités dans les systèmes de runtime comme containerd ou runc pour s'échapper vers l'hôte
Communication réseau non sécurisée : L'attaquant surveille la communication entre conteneurs pour obtenir des informations
Consommation de ressources incontrôlée : Les scripts malveillants consomment trop de ressources, causant une pénurie de ressources pour d'autres conteneurs
Cette recherche adopte une méthode d'analyse de cas de vulnérabilités réelles, sélectionnant deux failles de sécurité représentatives pour une analyse approfondie :
Un conteneur est un processus du point de vue du système d'exploitation hôte, avec un système de fichiers indépendant monté comme système de fichiers racine via chroot
L'attaquant crée des liens symboliques pointant vers les descripteurs de fichiers 7 et 8
Exécution de la commande sudo docker exec -it -w /foo <container-name> sleep 500
Runc monte le système de fichiers hôte dans le conteneur, permettant à l'attaquant d'accéder au système de fichiers hôte
L'isolation de sécurité des conteneurs présente les problèmes suivants :
Risque de partage de noyau : Tous les conteneurs partagent le même noyau du système d'exploitation, les vulnérabilités du noyau affectant tous les conteneurs
Vulnérabilités du runtime : Les vulnérabilités du système de runtime de conteneur (comme runc) peuvent entraîner l'échappement du conteneur
Risque de configuration incorrecte : Une configuration de permissions inadéquate augmente les risques de sécurité
Cet article s'appuie sur le développement de la technologie de virtualisation, dont les concepts existent depuis les années 1960, mais n'est devenu une technologie dominante que dans les années 1990.
Modèle de menaces systématique : Par rapport aux recherches existantes, cet article fournit une classification plus complète des menaces pour les conteneurs
Analyse de cas réels : Fournit des preuves concrètes des menaces de sécurité par l'analyse de vulnérabilités CVE réelles
Perspective du cycle de vie : Analyse les problèmes de sécurité du point de vue du cycle de vie de création des conteneurs
Nature à double tranchant de la virtualisation au niveau du système d'exploitation : Bien qu'elle fournisse une solution de virtualisation légère et efficace, le partage du noyau du système d'exploitation présente des défis d'isolation de sécurité
Diversité des vecteurs de menaces : Les systèmes de conteneurs font face à des menaces de sécurité tout au long du cycle de vie, du référentiel d'images à l'environnement de runtime
Risques de sécurité réels : L'analyse des cas CVE confirme l'existence réelle de menaces graves de sécurité telles que l'échappement de conteneur et l'escalade de privilèges
Défi de sécurité continu : La sécurité des conteneurs est un problème en évolution constante nécessitant une mise à jour continue des mesures de protection
Limitation de la portée de la recherche : Principalement axée sur les conteneurs Docker, ne couvrant pas d'autres technologies de conteneurs (telles que FreeBSD Jails, Solaris Zones)
Profondeur du modèle de menaces : Bien que les principaux vecteurs d'attaque aient été identifiés, les mesures de protection spécifiques pour chaque type d'attaque ne sont pas suffisamment discutées
Nombre de cas expérimentaux : Seuls deux cas CVE ont été analysés, ce qui peut être insuffisant pour refléter pleinement la complexité des menaces de sécurité des conteneurs
Analyse quantitative insuffisante : Absence d'évaluation quantitative du niveau de risque des différents vecteurs d'attaque
L'article propose les directions de recherche suivantes :
Détection de menaces pilotée par l'IA : Intégration de la technologie d'intelligence artificielle pour améliorer la capacité des systèmes conteneurisés à résister aux vulnérabilités émergentes
Protocoles de communication sécurisée : Développement de protocoles de communication inter-conteneurs plus sécurisés
Optimisation pour environnements sans fil : Optimisation des réseaux de conteneurs pour les environnements sans fil
Innovation au niveau du système : Amélioration de l'allocation des ressources par l'innovation au niveau du système, assurant les performances et la sécurité dans les infrastructures distribuées dynamiques
Contributions théoriques limitées : Principalement une organisation et une analyse des connaissances existantes, manquant de contributions théoriques originales
Vérification expérimentale insuffisante : Absence de vérification expérimentale à grande échelle de l'efficacité du modèle de menaces
Analyse quantitative manquante : Pas de fourniture d'évaluation quantifiée du risque des différents vecteurs d'attaque
Profondeur insuffisante des solutions : Bien que des recommandations de sécurité aient été proposées, les solutions techniques concrètes font défaut
Analyse comparative insuffisante : L'analyse comparative avec d'autres recherches sur la sécurité des conteneurs est relativement faible
Manuels classiques de systèmes d'exploitation (Tanenbaum & Bos, Modern Operating Systems)
Monographies sur la sécurité des conteneurs (Rice, Container Security)
Rapports importants sur les vulnérabilités de sécurité (CVE-2024-21626, CVE-2022-0847)
Travaux de recherche connexes de l'équipe d'auteurs dans les domaines de la sécurité, l'IA et l'IoT
Évaluation Générale : Cet article fournit un cadre d'analyse de sécurité relativement complet pour la virtualisation au niveau du système d'exploitation. Bien qu'il soit limité en termes d'innovation théorique, il possède une valeur élevée en termes de praticité et de systématicité, ce qui le rend approprié comme matériel d'introduction et de référence dans le domaine de la sécurité des conteneurs.