Sécurité Kubernetes et Attaques de cluster
Comment exploiter les vulnérabilités d'u ncluster ou d'une config k8s
Kubernetes est un orchestrateur de conteneurs extrêmement populaire, mais sa sécurité peut être un casse-tête si elle n'est pas bien gérée. Dans ce cours, nous allons explorer les différents vecteurs d'attaque et les mauvaises configurations qui peuvent rendre un environnement Kubernetes vulnérable. Nous verrons également comment les attaquants peuvent exploiter ces faiblesses pour compromettre un cluster.
1. Mauvaises configurations des charges de travail
L'une des erreurs les plus courantes en sécurité Kubernetes est une mauvaise configuration des workloads. Cela peut inclure :
Ports ouverts inutiles : Exposer des ports non nécessaires, rendant des services accessibles à des utilisateurs non autorisés.
Privilèges élevés inutiles : Assigner des privilèges root ou des privilèges élevés à des containers, ouvrant la voie à des escalades de privilèges.
Accès à des ressources sensibles : Des workloads mal configurés peuvent accéder à des fichiers système ou des secrets qui ne devraient pas être accessibles.
Pour attaquer ces configurations, les pirates cherchent souvent des workloads avec des privilèges root ou un accès non restreint à l'hôte. Une fois à l'intérieur d'un conteneur, ils peuvent ensuite accéder à des ressources sensibles sur le système hôte.
2. Vulnérabilités de la chaîne d'approvisionnement
Les images de conteneurs sont au cœur de Kubernetes, mais si elles sont mal sécurisées, elles deviennent des portes d'entrée pour les attaquants. Les images peuvent inclure des bibliothèques tierces vulnérables ou des malwares intégrés.
Attaque de la chaîne d'approvisionnement : En compromettant une image de conteneur utilisée par un cluster Kubernetes, un attaquant peut avoir un accès non autorisé ou exécuter du code malveillant.
Outils de scan pour remédier à cela :
Trivy et Clair peuvent scanner des images de conteneur à la recherche de vulnérabilités.
trivy image <image_name>
clairctl analyze <image_name>
3. Contrôle RBAC trop permissif
Kubernetes utilise un modèle de contrôle d'accès basé sur les rôles (RBAC) pour gérer les permissions. Si les rôles sont trop permissifs, les utilisateurs ou les services peuvent obtenir plus d'accès que nécessaire. Cela crée des failles que des attaquants peuvent exploiter pour accéder à des ressources sensibles ou exécuter des actions non autorisées.
Exemple d'attaque :
Un utilisateur avec trop de privilèges peut créer un pod malveillant ou accéder à des secrets critiques.
bash
Copier le code
kubectl create rolebinding attacker --clusterrole=admin --user=attacker@example.com
4. Absence de mise en œuvre de politiques centralisées
Sans une politique centralisée, les bonnes pratiques de sécurité ne sont pas appliquées de manière uniforme à travers les clusters. Cela laisse des failles de sécurité à exploiter par des attaquants.
Kubernetes Policy Engine : Des outils comme OPA (Open Policy Agent) et Kyverno peuvent être utilisés pour centraliser les politiques de sécurité.
5. Insuffisance de logs et de surveillance
Le manque de journaux et de surveillance efficace empêche de détecter les activités malveillantes. Les attaquants peuvent s'infiltrer et exploiter un cluster sans être remarqués.
Outils de surveillance recommandés :
Falco : Détecte les comportements suspects dans les clusters Kubernetes.
Kubescape : Scanne la sécurité des clusters et identifie les failles dans la configuration.
falco --k8s-audit kubescape scan framework nsa --submit
et pour kubescape, c’est tré simple !
kubescape scan
6. Mécanismes d'authentification cassés
Les mécanismes d'authentification mal configurés ou compromis permettent à des attaquants d'accéder aux clusters avec des privilèges élevés.
Exemple d'attaque :
Un attaquant peut exploiter une fuite de token ServiceAccount pour accéder à l'API Kubernetes.
Exécution des attaques :
export TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token) curl --cacert /var/run/secrets/kubernetes.io/serviceaccount/ca.crt --header "Authorization: Bearer ${TOKEN}" https://kubernetes.default.svc/api
7. Absence de segmentation réseau
Sans segmentation réseau adéquate, un attaquant qui compromet un pod peut facilement se déplacer latéralement dans le cluster, compromettant ainsi d'autres services ou pods.
Outils pour segmentation réseau :
Calico et Cilium offrent une politique de sécurité réseau pour isoler les pods et les empêcher de communiquer avec des services non autorisés.
kubectl apply -f calico-network-policy.yaml
8. Mauvaise gestion des secrets
Le stockage non sécurisé de secrets comme les clés API et les mots de passe est un vecteur d'attaque classique. Kubernetes fournit des Secrets pour stocker ces informations sensibles, mais leur mauvaise gestion peut exposer le cluster.
Attaque des Secrets :
Un attaquant qui accède aux Secrets Kubernetes peut voler des informations sensibles et compromettre d'autres services.
kubectl get secrets -o json | jq '.items[] | select(.type=="kubernetes.io/service-account-token")'
9. Composants de cluster mal configurés
Des composants comme le Kubelet, les API servers ou les services de dashboard peuvent être des points d'entrée si mal configurés.
Exemples d'attaques :
API server mal configuré : Peut permettre un accès non authentifié ou des appels API non sécurisés.
Kubelet : Les Kubelets mal protégés peuvent permettre à un attaquant de contrôler des pods ou d'exécuter du code à distance.
10. Utilisation de composants obsolètes
Ne pas mettre à jour Kubernetes ou ses composants expose le cluster à des vulnérabilités déjà connues. Des failles de sécurité critiques peuvent être corrigées dans les dernières versions, mais si un cluster reste obsolète, il devient vulnérable aux exploits publics.
Les Outils de Pentest pour Kubernetes :
Kube-Audit : Audite les erreurs de configuration et les mauvaises pratiques de sécurité dans le cluster.
Popeye : Un « sanitisateur » qui évalue l'état de santé du cluster.
popeye --namespace default
Cilium Tetragon et Hubble : Offrent une observabilité basée sur eBPF pour surveiller le comportement des pods et du réseau.
Labs pour Exercices :
Pour pratiquer ces concepts, vous pouvez explorer des labs interactifs comme Kubernetes Goat ou les challenges de sécurité sur madhuakula.com.
https://madhuakula.com/kubernetes-goat/index.html
Kubernetes est un environnement complexe et en constante évolution. Comprendre ses vecteurs d'attaque et savoir comment défendre ses composants est essentiel pour maintenir un environnement sécurisé.
Dans LaFormationCyber, vous découvrirez une mine d'informations bien plus riche que ce que cette newsletter peut offrir.
Vous y trouverez des défis étape par étape pour compromettre uncomment exploiter un cluster kubernetes et vous retrouver sur le serveur qui contiens un node du cluster, et pourquoi pas tous les serveurs du cluster !
Dans la prochaine newsletter, tu en apprendras plus sur Zmap (pas Nmap, Zmap !), et comment on peut scanner internet tout entier en moins d’une journée pour trouver des serveur vulnerables ou pour cartographier le plus grand réseau mondial !
on utilisera surement nmap !
Tu ne connais pas nmap ? => Petit cours nmap
À la semaine prochaine, Neo.
Tu aimerais te former à la cybersécurité pour devenir un hacker éthique ou le Cybersecurity Champion de ton équipe ?
Rejoins la formation spécialisée en hacking en cliquant ici.