
يفحص عناقيد Kubernetes من أي هوية، ويكشف الصلاحيات الخطيرة، ويسلسلها إلى مسارات تصعيد متعددة الخطوات للوصول إلى اختراق العنقود.
مخطط مسارات هجمات RBAC في Kubernetes. يكتشف ما يمكن لهويتك فعله، ويحدد الصلاحيات الخطيرة، ويربطها في مسارات متعددة الخطوات للوصول إلى اختراق العنقود.
مصمم لفِرَق الاختبار الأمني الهجومي ومختبري الاختراق.
يقوم kube-reaper بفحص عنقود Kubernetes من أي هوية (مستخدم، حساب خدمة، مجموعة) وينتج:
يتطلب سلسلة أدوات Rust (rustup + stable).
git clone https://github.com/youruser/kube-reaper.git
cd kube-reaper
cargo build --release
الملف التنفيذي موجود في target/release/kube-reaper.
ينتج بناء musl ملفًا تنفيذيًا ثابتًا بالكامل بدون أي تبعيات. يعمل على أي نظام Linux x86_64.
rustup target add x86_64-unknown-linux-musl
cargo build --release --target x86_64-unknown-linux-musl
الملف التنفيذي موجود في target/x86_64-unknown-linux-musl/release/kube-reaper (~5.4 MB).
# Copy to a Kubernetes node
scp target/x86_64-unknown-linux-musl/release/kube-reaper user@node:/tmp/
# Copy into a running pod
kubectl cp target/x86_64-unknown-linux-musl/release/kube-reaper mynamespace/mypod:/tmp/kube-reaper
# Scan with current kubeconfig
kube-reaper
# Scan a specific namespace
kube-reaper -n production
# Scan with a stolen SA token
kube-reaper --token <JWT> --server https://10.0.0.1:6443
# Scan as a different user (requires impersonate permissions)
kube-reaper --as-user system:serviceaccount:development:code-server
# Recursive identity pivot (read SA tokens, mint new tokens, map transitive access)
kube-reaper --pivot
# Pivot with custom depth (default: 3)
kube-reaper --pivot --pivot-depth 5
# Show only critical and high findings
kube-reaper -s high
# Output JSON
kube-reaper -o json
# Save JSON report to file
kube-reaper -w results.json
Usage: kube-reaper [OPTIONS]
Options:
-n, --namespace <NAMESPACE> Target namespace (default: all accessible)
-k, --kubeconfig <KUBECONFIG> Path to kubeconfig file
--token <TOKEN> Bearer token (requires --server)
--server <SERVER> API server URL (required with --token)
--as-user <USER> Impersonate a user
--as-group <GROUP> Impersonate a group
--pivot Recursive identity pivot via SA secrets and TokenRequest
--pivot-depth <N> Maximum pivot depth [default: 3]
-o, --output <OUTPUT> Output format [default: terminal] [values: terminal, json]
-w, --write <WRITE> Write JSON results to file
-s, --severity <SEVERITY> Minimum severity [default: low] [values: critical, high, medium, low, info]
--unconventional-only Show only unconventional RBAC abuses
--chains-only Show only attack chains
-h, --help Print help
-V, --version Print version
يجرّب kube-reaper طرق المصادقة التالية بالترتيب:
--token + --server - رمز حامل مباشر. استخدمه مع رمز SA مسروق أو JWT. يقبل الشهادات الموقعة ذاتيًا تلقائيًا.--kubeconfig / -k - ملف kubeconfig صريح. يقرأ أيضًا متغير البيئة KUBECONFIG.~/.kube/config.يضيف --as-user و--as-group ترويسات انتحال الهوية إلى أي طريقة مصادقة. يجب أن تمتلك هويتك فعل impersonate لكي يعمل هذا.
يُمكّن علم --pivot التنقل العودي بين الهويات. تكتشف هذه الميزة مسارات الهجوم العابرة من خلال التنقل عبر بيانات اعتماد حسابات الخدمة.
kubernetes.io/service-account-token) ويستخرج الرمز.serviceaccounts/token فيه دون قيود على اسم المورد، يصدر رموزًا قصيرة العمر عبر واجهة TokenRequest API.--pivot-depth (الافتراضي: 3).يستخدم الفحص اجتياز BFS للعثور على أقصر مسارات التنقل أولاً. يتوقف عند 50 هوية لمنع الفحوصات الجامحة.
تُظهر كل هوية منقولة:
يطبّق ماسح التنقل هذه الضوابط لمنع الإيجابيات الكاذبة:
apiGroups: ["*"]) تُحتسب لفحوصات قراءة الأسرار وإنشاء الرموز. القواعد في المجموعات غير الأساسية (مثل custom.metrics.k8s.io) لا تتطابق.resourceNames محددة لا تُحتسب لإنشاء الرموز. القاعدة التي تسمح بإنشاء رمز لحساب خدمة واحد مسمّى ليست نفس إنشاء الرموز غير المقيّد.verbs: ["*"]، وليس مجرد أي فعل على resources: ["*"].تُظهر مخرجات الطرفية هذه الأقسام (يظهر كل منها فقط عندما يحتوي على نتائج):
| القسم | المحتوى |
|---|---|
| Pod Context Analysis | نواقل الهروب، القدرات، IMDS السحابي، الشبكة، رمز SA، عمليات التركيب، متغيرات البيئة |
| Attack Path Chains | مسارات هجوم متعددة الخطوات مع تعليمات خطوة بخطوة |
| Identity Pivot Graph | خريطة التنقل العودي بين الهويات مع الطرق والصلاحيات وقدرة التنقل الإضافية |
| Dangerous Pods | حاويات ذات صلاحيات عالية، عمليات تركيب على المضيف، مقابس وقت التشغيل، أسرار مكشوفة |
| Exposed Services | خدمات LoadBalancer وNodePort يمكن الوصول إليها من خارج العنقود |
| Sensitive ConfigMaps | ConfigMaps بمفاتيح تحتوي على بيانات اعتماد أو أسرار |
| CronJobs | مهام مجدولة بصلاحيات حساب خدمة خطيرة |
| Secret Triage | الأسرار التي يمكن الوصول إليها مصنفة حسب النوع وقيمة الهجوم |
| CRD Attack Surface | موارد مخصصة من مشغّلات خطيرة معروفة |
| DNS Service Discovery | الخدمات المكتشفة عبر استعلامات CoreDNS (بدون الحاجة إلى RBAC) |
| Admission Controller Probing | نتائج dry-run لكل namespace لستة إعدادات Pod خطيرة |
| Other Identities | هويات ذات صلاحيات مفرطة تُعد أهداف تنقل |
| Namespace Security | حالة تطبيق PSS لكل namespace |
| Dangerous Permissions | نتائج الصلاحيات الفردية حسب الخطورة |
| Summary | أعداد جميع فئات النتائج |