Sécurité Kubernetes
Kubernetes, l’un des outils les plus connus pour la conteneurisation du déploiement d’applications,intéresse les cybercriminels. Découvrez les principaux vecteurs d'attaque, les vulnérabilités etOutils permettant d'assurer la sécurité de Kubernetes contre le piratage et les attaques réseau.
Qu'est-ce que Kubernetes?
Presque tout le monde qui a déjà été en contact avec le monde DevOps a probablement une idée générale de ce qu’est Kubernetes. Il s’agit d’un système d’orchestration de conteneurs assez populaire, c’est-à-dire essentiellement la gestion de conteneurs de données. K8s, comme on nomme souvent Kubernetes, est un système open source d’automatisation et de déploiement de logiciels pour les applications conteneurisées et leur gestion.
Vous souhaitez avoir une compréhension approfondie de tous les aspects modernes de la sécurité Kubernetes?Lisez attentivement cet article et ajoutez-le à vos favoris pour y revenir plus tard, nous mettons régulièrement cette page à jour.
La version originale du projet a été développée il y a relativement peu de temps par Google pour les besoins internes de l'entreprise elle-même, mais a ensuite été transférée à la gestion de la Cloud Native Computing Foundation, d'où elle est parvenue au grand public. Initialement, elle a été conçue comme un outil de gestion des clusters de conteneurs. Le système est dynamique, il réagit aux événements en temps réel et permet de démarrer facilement votre projet, qui fonctionnera sans aucune astuce et s'adaptera sur demande, c'est-à-dire qu'il sera flexible, rapide et économique.
Les pratiques d'administration de Kubernetes utilisent le concept de pods. Chaque pod est un groupe de conteneurs réunis par une tâche commune, qui peut être à la fois un microservice et une application massive, répartis sur plusieurs machines fonctionnant en parallèle. Kubernetes vise à résoudre les problèmes liés à la distribution efficace de l'exécution des conteneurs entre les nœuds du cluster en fonction des variations de charge et de la demande actuelle de services. En d'autres termes, il s'agit d'un système de gestion flexible de l'infrastructure de conteneurisation avec possibilité d'équilibrage de charge.
Avec Kubernetes, vous pouvez lancer un grand nombre de conteneurs tels que Docker ou Rocket sur un grand nombre d'hôtes, surveiller l'état de l'environnement d'exécution et réagir rapidement aux changements, gérer les conteneurs en cours d'exécution, assurer leur placement et leur réplication conjoints, et également mettre à l'échelle et équilibrer un grand nombre d'hôtes au sein du cluster.
Aujourd'hui, Kubernetes est devenu une sorte de norme pour les environnements DevOps modernes, tant dans les grandes entreprises que parmi les start-ups. Il est activement utilisé dans des services cloud tels qu'AWS, Microsoft Azure ou Google Cloud. À sa base, Kubernetes est l'un des composants stratégiques de l'ensemble du processus DevOps, c'est pourquoi les attaques contre lui ont toujours été et restent d'actualité. Après avoir piraté ce système, l'attaquant obtient l'accès à tous les nœuds et conteneurs fonctionnant à l'intérieur de K8s, ce qui constitue un moyen direct de compromettre ou de fuir des données sensibles.
Plus important encore, le système étant largement déployé, il est probable que le réseau soit encore rempli de serveurs K8s publics, auxquels on peut accéder depuis Internet. Par exemple, un service comme Shodan, qui permet de rechercher des versions vulnérables de logiciels disponibles sur Internet. Des dizaines de milliers de bases publiques ont souffert de ces vulnérabilités ouvertes à leur époque. Si vous souhaitez tester le fonctionnement de Shodan dans la pratique, vous pouvez le faire à l'aide d'un script de recherche, disponible sur GitHub.
Principaux dangers pour la sécurité de Kubernetes
Comme tout système complexe inventé par l'homme, l'infrastructure du cluster K8s présente des problèmes de sécurité typiques que les experts rencontrent souvent. Parmi ceux-ci, on peut citerExplosion du trafic est-ouest. L'essence de cette attaque réside dans le fait que les conteneurs peuvent être déployés dynamiquement dans plusieurs clouds indépendants, ce qui augmente considérablement le trafic d'échange de données au sein d'un cluster logique. Les emplacements de conteneurs distants peuvent être utilisés par les cybercriminels, par exemple, pour mettre en œuvre des attaques DDoS.
Problème de l'augmentation de la surface d'attaque.Elle repose sur le fait que chaque conteneur peut avoir une surface d'attaque différente et ses propres vulnérabilités uniques, exploitées par les hackers. Par exemple, des vulnérabilités des systèmes d'autorisation Docker ou AWS peuvent être utilisées.
Connexions non autorisées entre conteneurs, lorsque des pods compromis peuvent se connecter à d'autres conteneurs sur le même ou des hôtes différents pour lancer une attaque. Bien que le filtrage se fasse au niveau L3, c'est-à-dire que les ACL sont fournies par l'équipement réseau selon les règles configurées, certains appels non autorisés ne peuvent être détectés qu'par filtrage.
Compromission des conteneurs- Il s'agit d'une attaque dont l'essence est d'utiliser une configuration incorrecte pour tous les conteneurs du cluster, ce qui contribue indirectement à compromettre ou à inclure des vulnérabilités applicatives. Les compromissions de conteneurs comprennent la manipulation de la commutation interne, le contrôle des processus ou l'accès au système de fichiers.
Comme tout logiciel applicatif et système, Kubernetes présente un certain nombre de vulnérabilités critiques dont la présence menace l'ensemble du cluster, des conteneurs en cours d'exécution en général aux données spécifiques stockées dans la base de données sur un serveur séparé. Selon les statistiques compilées à partir du registre des vulnérabilités NIST, les erreurs les plus critiques ont été détectées en 2018 et 2019, avec respectivement huit et quatre vulnérabilités.
La première, découverte en 2019, permet à un conteneur malveillant de remplacer l'exécutable runC sur le système hôte, sans aucune interaction de l'utilisateur. À la suite d'une telle attaque, un attaquant peut obtenir un accès root à l'hôte et la possibilité d'y exécuter du code arbitraire. En février 2019, un exploit pour cette vulnérabilité a été publié sur GitHub. Un autre bug détecté en mars de la même année permet à un attaquant de transférer des fichiers depuis le cœur vers l'ordinateur de l'opérateur ou de les modifier à l'aide d'une usurpation d'identité binaire tar à l'aide de la commande interne kubectl cp standard.
Une autre faille découverte en 2018 est liée à l'escalade des privilèges. Elle permet à un hacker d'augmenter ses privilèges dans le cluster et d'y accéder en raison d'une erreur logique dans le traitement des appels API. Selon les experts en cybersécurité, cette faille présente un niveau de menace élevé, car elle ne nécessite pas d'authentification préalable et est facile à exploiter. L'accès non autorisé est ouvert après l'envoi d'une requête spécifique au serveur API Kubernetes.
Tous les assemblages Kubernetes vulnérables ne traitent pas correctement les requêtes malveillantes, ce qui permet d'accéder au back-end à l'aide des crédentiels TLS spécifiés dans les paramètres du serveur API. L'exploit PoC a été publié sur GitHub quelques jours seulement après la découverte du problème. Un correctif a ensuite été publié pour cette vulnérabilité.
Principales attaques Kubernetes
Kubernetes a une architecture assez complexe et intègre de nombreux composants. Par conséquent, les types d'attaques et leurs directions vers le système varient également. Ainsi, le schéma général des attaques comprend:
- Les pods sont des unités élémentaires indivisibles de déploiement et d'adressage dans Kubernetes. Un pod possède sa propre adresse IP et peut contenir un ou plusieurs conteneurs.
- Services - services réseau assurant l'échange de données au sein du cluster, l'équilibrage, la réplication, le traitement des requêtes, etc.
- Composants du système - les principaux composants utilisés pour gérer le cluster Kubernetes: serveur API, Kubelet et autres.
- Node de travail - serveurs de production qui exécutent des conteneurs d'applications et d'autres composants Kubernetes, par exemple, tels que les agents K8s et les serveurs proxy ;
- Le Master Node est le serveur maître principal qui gère l'ensemble du cluster de nœuds de travail (pods) et le déploiement des modules sur ces nœuds.
Solutions de sécurité Kubernetes
Pour résoudre ces problèmes de sécurité des conteneurs dans les systèmes DevOps, les ingénieurs utilisent des outils spécialisés pour la surveillance et la gestion automatique de la cybersécurité. Les techniques d’administration réseau et système telles que le chiffrement TLS, le contrôle d’accès basé sur les rôles (RBAC), les pare-feu, l’authentification tierce, la restriction des privilèges et d’autres méthodes de protection des ressources du cluster sont encore largement utilisées.
De plus, une approche intégrée visant à garantir la cybersécurité de votre entreprise augmente considérablement les chances de parvenir à éliminer avec succès les vulnérabilités. Par exemple, un inventaire complet de tous vos actifs numériques offre un avantage supplémentaire en matière de sécurité Kubernetes, car il permet non seulement d'identifier et de vérifier tous les actifs numériques, mais aussi de surveiller les référentiels, les stockages cloud et même Dark Web en quête de toute donnée de votre entreprise obtenue illégalement par des hackers.
Ressources supplémentaires
- En savoir plus sur la gestion des surfaces d'attaque basée sur l'IA avec ImmuniWeb® Discovery
- En savoir plus sur les tests de pénétration des applications basés sur l'IA avec ImmuniWeb
- En savoir plus sur les opportunités du programme de partenariat ImmuniWeb
- Suivez-nous sur LinkedIn, X, Telegram et WhatsApp