Publié le 13 août 2019
Kubernetes (parfois abrégé en K8s) est un système d'orchestration de conteneurs open-source lancé en 2015 et couramment utilisé pour automatiser le déploiement, la mise à l'échelle et la gestion des applications. L'utilisation de Kubernetes gagne en popularité car elle permet aux équipes d'ingénieurs de gagner du temps et de travailler à l'échelle. Étant donné que la technologie est relativement nouvelle et que l'adoption est très forte, de nombreux développeurs apprennent à l'utiliser au fur et à mesure, ce qui conduit souvent à des configurations erronées et à des insécurités intégrées.
Ces derniers temps, la communauté s'est pas mal concentrée sur la sécurité de Kubernetes. Pas plus tard que la semaine dernière, lors du salon Black Hat USA 2019, plusieurs sessions de formation ont été organisées sur le sujet, ainsi qu'un briefing portant spécifiquement sur la manière d'attaquer Kubernetes, intitulé "The Path Less Traveled : Abusing Kubernetes Defaults".
Pour aider les chercheurs qui explorent le sujet et les équipes de sécurité des entreprises qui recherchent leurs composants Kubernetes inconnus et exposés, nous avons récemment ajouté le protocole Kubernetes à notre ensemble de données IPv4. Nous entrerons dans les détails plus loin dans ce billet, mais nous détectons actuellement environ 16 000 hôtes exécutant Kubernetes dans le monde, la plupart des hôtes exécutant les versions 1.13 et 1.10.
Heureusement, de nombreuses entreprises ont commencé à prêter plus d'attention aux risques que le protocole de conteneurisation peut leur faire courir.
Attaques réelles exploitant les faiblesses de Kubernetes
Les vulnérabilités de sécurité de Kubernetes sont un sujet brûlant dans la communauté. Bien qu'il existe des vulnérabilités et des exploits réels, les mauvaises configurations sont un problème beaucoup plus courant.
- Shopify a récemment fait parler d'elle en expliquant qu'un chercheur de bug bounty l'avait alertée sur une vulnérabilité qui lui permettait de prendre le contrôle du cluster de conteneurs. Bien qu'il ne soit pas clair si cela était lié spécifiquement à Kubernetes, il s'agit d'un type similaire de risque de sécurité lié aux outils d'orchestration.
- Début 2018, Tesla a été victime d'une attaque basée sur Kubernetes grâce à un oubli dans la configuration de Kubernetes, qui ne nécessitait même pas de mot de passe pour y accéder. "Au sein de ce seul pod Kubernetes, les identifiants d'accès ont été exposés à l'environnement AWS de Tesla, qui contenait un seau Amazon S3 (Amazon Simple Storage Service) contenant des données sensibles telles que la télémétrie", ont déclaré les chercheurs de RedLock.
- Nos amis de Laceworks Labs ont effectué des recherches en cours en utilisant les données Censys pour trouver des instances Kubernetes vulnérables dans la nature. Plus précisément, ils ont utilisé nos données pour rechercher des tableaux de bord Kubernetes.
- "Dans notre récente analyse, nous avons trouvé plus de 500 [tableaux de bord Kubernetes] exposés à l'internet. Pour le serveur API, nous avons à nouveau utilisé Censys et trouvé plus de 21 000 serveurs API accessibles et 800 serveurs API non sécurisés (pas d'authentification ou d'autorisation, plus à venir sur la recherche !)." Leur blog sur le sujet est plus détaillé. En fait, ils ont présenté leur recherche à BSidesSF 2019 et leur exposé mérite d'être visionné.
- StackRox et Skybox ont récemment publié un rapport (fermé) mettant en garde contre les dangers et l'impact potentiel sur la sécurité de mauvaises pratiques en matière de sécurité des conteneurs.
Maintenant que nous avons établi qu'il y a des attaques en cours sur ces types d'outils d'orchestration, plongeons plus avant dans la façon dont vous pouvez trouver des composants Kubernetes qui sont exposés sur Internet.
Comment trouver Kubernetes sur Censys?
Heureusement, c'est facile, puisque nous avons ajouté un nouveau protocole : Port 6443. Vous pouvez simplement utiliser notre balise de protocole(protocols : "6443/kubernetes") pour les trouver rapidement.
Nous vous suggérons de commencer votre recherche en cherchant Kubernetes avec le tableau de bord en cours d'exécution, qui sont souvent des points particulièrement faibles dans ces composants.
Pour rechercher spécifiquement tout composant Kubernetes lié à votre bloc ASN ou CIDR, il suffit d'ajouter "AND [ASN][CIDR]" à cette requête.
Pour chaque composant Kubernetes que nous avons pu trouver, vous trouverez les données suivantes :
- noms
- adresses (internes et externes),
- Si le tableau de bord de l'interface web est en cours d'exécution
- Rôles du rbac
- sur la machine hôte ou le nœud invité :
- OS
- Noyau
- L'architecture
- Version Docker
- Version kubelet
- Version du proxy kube
- images des conteneurs
- volumes joints
- volumes utilisés
L'image ci-dessous provient d'un seul hôte que nous avons trouvé lors de nos analyses :
En plus de ces attributs, nous collectons des données sur les rôles de sécurité et les pods. Le risque d'une mauvaise configuration des rôles de sécurité est la possibilité d'attaques par escalade des privilèges. Nous essayons également de savoir si le tableau de bord de l'interface Web est en cours d'exécution, ce qui est considéré comme peu sûr même lorsque l'authentification est requise.
Conseils pour sécuriser correctement Kubernetes
Tout d'abord, nous vous recommandons vivement de ne pas exposer Kubernetes, qui est par nature un port peu sûr, à l'Internet. Il n'y a pas de réel avantage à le connecter et tout ce que cela fait, c'est vous exposer à des risques.
Deuxièmement, n'autorisez pas l'authentification anonyme qui, dans certaines situations très spécifiques, peut être activée par défaut pour certaines versions de Kubernetes.
Quelques étapes pour les sécuriser correctement :
En général, assurez-vous que vos composants sont correctement installés et configurés, le CIS Kubernetes security benchmark est une bonne base de référence pour vous évaluer. Toutes les étapes que vous sautez dans ce processus peuvent devenir un énorme problème plus tard et finir par créer un problème de sécurité important. La surveillance de la configuration à cette étape initiale est essentielle.
Kubernetes fournit un article assez approfondi sur les problèmes de sécurité et les "gotchas" et sur la façon de les éviter, qui vaut la peine d'être lu. Plutôt que de régurgiter ce qu'ils ont déjà fourni, nous allons vous envoyer sur leur site pour des suggestions très spécifiques sur la sécurité de vos composants Kubernetes.
N'oubliez pas que vous pouvez utiliser Censys pour trouver toutes sortes de dispositifs et d'infrastructures exposés. Découvrez quelques-uns des ajouts les plus récents à nos ensembles de données : Microsoft Server Message Blocks (SMB), et les applications de bureau à distance, comme pcAnywhere, le protocole de bureau à distance (RDP), et le réseau informatique virtuel VNC, par exemple.
Si vous cherchez d'autres conseils comme ceux-ci sur la façon d'utiliser les données Censys pour sécuriser le réseau de votre entreprise, gardez un œil sur notre blog et abonnez-vous à notre fil Twitter @censysio.