Les clusters Kubernetes sont des environnements informatiques comme les autres. Cela veut donc dire qu'ils sont également exposés et potentiellement ouverts à des attaques de pirates en tous genres. La compromission de la console d'administration Kubernetes de Tesla en 2018 le montre bien. Dans une dernière enquête, le spécialiste en gestion des risques et threat intel Cyble a identifié plus de 900 000 clusters K8's exposés sur le web. « Cela n'implique pas nécessairement que toutes les instances exposées sont vulnérables aux attaques ou entraîneront la perte de données sensibles. Il met plutôt l'accent sur l'existence de pratiques de mauvaise configuration apparemment simples qui pourraient faire des entreprises des cibles lucratives pour les attaquants à l'avenir », explique Cyble.
Dans son enquête, Cyble a remarqué que les États-Unis avaient le nombre d'expositions le plus élevé (65%), suivis de la Chine (14%), de l'Allemagne (9%), de l'Irlande (6%) ex aequo avec les Pays-bas (6%). Les composants des instances K8's pouvant être ciblés sont les suivants : KubernetesDashboard, Kubernetes-master, Kubernetes, Kube, K8 et Favicon:2130463260, -1203021870. S'agissant des ports les plus exposés, arrive en tête 443 (1 038 923), 10250 (231 223) et 6443 (84 443).
975 371 demandes non authentifiées acceptées par l'API Kubelet
Au cours de son investigation, Cyble a par ailleurs trouvé que la majorité des environnements Kubernetes exposés avaient un code de statut 403 (975 371). « Cela signifie que l'API Kubelet a accepté la demande non authentifiée mais a déterminé que nous n'avions pas les droits nécessaires (autorisation) pour visiter ce point de terminaison », précise l'éditeur. « Quelques-unes des expositions ont renvoyé le code d'état 401 (4 954). Ces informations impliquent qu'un cluster Kubernetes fonctionne dans l'environnement. Cela peut conduire l'attaquant à tenter divers exploits et vulnérabilités K8 pour pénétrer dans l'environnement ». Et les chercheurs de Cybel d'indiquer également que des instances exposées ont renvoyé le code d'état 200 (799), indiquant que certains nœuds exécutant Kubelet ont répondu avec des informations sur les pods en cours d'exécution sur ce nœud.
Pour éviter que les configurations par défaut deviennent des menaces de sécurité importantes, des mesures peuvent (doivent) être prises. Cela est aussi valable pour les configurations incorrectes telles que l'utilisation de noms de conteneurs par défaut, l'absence de protection du tableau de bord Kubernetes par un mot de passe sécurisé ou encore laisser les ports de service ouverts par défaut au public. Le cas échéant, les entreprises sont donc exposées à des risques de fuite de données.
10 recommandations pour sécuriser ses environnements K8's
1. Maintenir Kubernetes à jour avec la dernière version ;
2. Supprimer les outils de débogage des conteneurs de production ;
3. Contrôler les personnes ayant accès à l'API Kubernetes et les autorisations dont elles disposent avec le contrôle d'accès basé sur les rôles (RBAC) ;
4. Limiter l'exposition des actifs et des ports critiques. S'assurer que son réseau limite l'accès aux ports liés à kubelet tels que 10255 et 10250. Envisager de limiter l'accès au serveur d'API Kubernetes aux seuls réseaux dignes de confiance ;
5. Pour minimiser l'impact possible d'une violation, les workloads les plus importants doivent être exécutés sur un groupe de postes de travail distinct. Cette méthode réduit la possibilité qu'une application sensible soit accessible via une application moins sécurisée qui partage un environnement d'exécution ou un hôte de conteneur ;
6. Suivre les bonnes pratiques de configuration de Kubernetes ;
7. Créer et définir des politiques de réseau de cluster et une politique de sécurité de pod à l'échelle du cluster ;
8. Avant de passer en revue des problèmes de sécurité ou des améliorations de sécurité spécifiques à Kubernetes, réaliser un benchmark par le CIS ;
9. S'assurer que les journaux d'audit sont activés et surveillés pour les demandes d'API inhabituelles, en particulier les échecs d'autorisation ;
10. Minimiser l'accès administratif aux nœuds Kubernetes.
Commentaire