12 KiB
12 KiB
تقرير الفحص والتقييم الأمني والمعماري الشامل لمشروع المايكروسيرفيس على منصة غيمة
Comprehensive Architecture, Internal DNS, Raw TCP & Security Penetration Report
Target Platform: Ghaymah Systems (deploy.ghaymah.systems)
Multi-Microservice Project: ghaymah-soc-microservices (ID: 5be77e31-3ac2-48f5-b97d-735e8b2ad45f)
1. الملخص التنفيذي (Executive Summary)
تم بنجاح بناء ونشر بيئة مايكروسيرفيس متعددة الحاويات (Multi-Microservice Architecture) على منصة غيمة (Ghaymah Systems) تحاكي تماماً بنية الـ SOC Microservices التي تم إنشاؤها مسبقاً. تم ربط الخدمات عبر الشبكة الخاصة (Private Mesh Network) واختبار بروتوكولات الاتصال (Internal DNS، Raw TCP)، تلتها مرحلة اختبارات اختراق أمني وعزل شبكي صارمة (Penetration & Isolation Testing).
أبرز النتائج الفنية والأمنية:
- نجاح منظومة الـ Internal DNS: أثبتت الاختبارات أن نظام أسماء النطاقات الداخلي (CoreDNS @
10.43.0.10:53) يتعرف ويحلل أسماء الحاويات بشكل ديناميكي عبر المعرف الفريد[name]-[hash12](مثلsoc-redis-10f420c389ef->10.42.5.99). - نجاح الاتصال عبر مآخذ TCP المباشرة (Raw TCP Sockets): أثبتت الاختبارات نجاح الربط غير المعتمد على HTTP (Raw TCP على المنفذ
6379) مع قاعدة بياناتsoc-redisوتنفيذ عمليات المصافحة وكتابة وقراءة التهديدات الأمنية بنسبة نجاح 100%. - تكامل الاتصال بين الحاويات (Inter-Service Mesh Hops): تم إثبات قدرة بوابة الحافة
soc-gatewayعلى مخاطبة قاعدة البياناتsoc-redisوالحاوية الخلفيةsoc-backendمباشرة عبر الـ Internal DNS والـ Private Overlay Network دون أي وسيط خارجي. - ثغرة معمارية في العزل بين المشاريع (Critical Security Finding - Missing Intra-Tenant Project Isolation):
- الخلل: المشاريع المختلفة لنفس المستخدم (Projects) لا تمتلك جدران عزل شبكي (NetworkPolicy).
- الإثبات العملي: تمكنت حاويات المشروع الجديد
ghaymah-soc-microservicesمن استكشاف وحل عناوين DNS والاتصال المباشر عبر TCP و HTTP مع حاويات مشاريع سابقة منفصلة تماماً (dns-tcp-testوauth-deploy)، وتم سحب محتوى تطبيقauth-deployبنجاح (<h1>test</h1>).
- سلامة العزل الخارجي ومحيط الكلاستر (Perimeter & Cluster Security):
- محاولة الوصول غير المصرح إلى Kubernetes API (
10.43.0.1:443) رُفضت برمز401 Unauthorized(صلاحيات RBAC محكمة). - عنوان بيانات السحابة التعريفية (AWS/Cloud Metadata @
169.254.169.254) محجوب وغير قابل للوصول (حماية ممتازة ضد SSRF). - خدمات قاعدة البيانات الخاصة غير معروضة إطلاقاً على الإنترنت العام (
HTTP 404).
- محاولة الوصول غير المصرح إلى Kubernetes API (
2. الهيكلية المعمارية للمشروع الجديد (Project Architecture & Topology)
graph TD
subgraph PUBLIC_INTERNET["🌐 Public Internet / External Users"]
User["User / Security Analyst"]
end
subgraph GHAYMAH_TENANT["🏢 Ghaymah Tenant Namespace: d62f9886-fced-4cf2-98e4-5b62000d4f03"]
subgraph PROJECT_SOC["📁 Project: ghaymah-soc-microservices (ID: 5be77e31)"]
subgraph INGRESS_LAYER["Ingress Layer"]
Gateway["🛡️ soc-gateway-28cd1dc4e034\nIP: 10.42.5.101\nPublic: soc-gateway-28cd1dc4e034.hosted.ghaymah.systems"]
end
subgraph INTERNAL_MESH["Internal Private Mesh (10.42.5.0/24)"]
Backend["⚙️ soc-backend-d1895c70f6b2\nIP: 10.42.5.103\nPort: 7681 / 4000 (Private)"]
Redis["🗄️ soc-redis-10f420c389ef\nIP: 10.42.5.99\nPort: 6379 (Private Raw TCP)"]
Tester["🔍 soc-tester-9b6540e2d4ed\nIP: 10.42.5.102\nDiagnostic & Security Pod"]
end
end
subgraph PREVIOUS_PROJECTS["📁 Other Projects in Same Tenant (Vulnerable Boundary)"]
AuthApp["🌐 auth-deploy-4c0bca85312b\nIP: 10.42.4.223\nProject: auth-deploy"]
OldRedis["🗄️ test-redis-feccbaec5bd7\nIP: 10.42.5.97\nProject: dns-tcp-test"]
end
DNS["🧭 CoreDNS Server\nIP: 10.43.0.10:53"]
end
User -->|HTTPS| Gateway
Gateway -->|Internal DNS + TCP 6379| Redis
Gateway -->|Internal DNS + TCP 7681/4000| Backend
Backend -->|Raw TCP 6379| Redis
Tester -->|CoreDNS Query| DNS
%% Lateral Movement Vectors (Finding)
Tester -.->|⚠️ Lateral Movement: Cross-Project TCP 6379| OldRedis
Tester -.->|⚠️ Lateral Movement: Cross-Project HTTP 80| AuthApp
بيانات الخدمات المنشورة في المشروع:
| اسم الخدمة | المعرف الفريد الداخلي (UniqueName) | نوع الحاوية | المنفذ | عنوان IP الداخلي | حالة النشر | النطاق الخارجي |
|---|---|---|---|---|---|---|
| soc-gateway | soc-gateway-28cd1dc4e034 |
Edge Gateway & UI | 7681 / 3000 | 10.42.5.101 |
synced | soc-gateway-28cd1dc4e034.hosted.ghaymah.systems |
| soc-backend | soc-backend-d1895c70f6b2 |
REST / Analysis Engine | 4000 / 7681 | 10.42.5.103 |
synced | Private Only (No public route) |
| soc-redis | soc-redis-10f420c389ef |
Cache & Threat DB | 6379 (TCP) | 10.42.5.99 |
synced | Private Only (No public route) |
| soc-tester | soc-tester-9b6540e2d4ed |
DevSecOps Tester Pod | 7681 | 10.42.5.102 |
synced | soc-tester-9b6540e2d4ed.hosted.ghaymah.systems |
3. نتائج اختبارات الوظائف وجودة الاتصال (Functionality & QA Testing)
3.1 اختبارات الـ Internal DNS
تم إجراء استعلامات DNS متقدمة عبر nslookup و dig داخل شبكة الـ Mesh:
# 1. فحص خدمة قاعدة البيانات
nslookup soc-redis-10f420c389ef
# النتيجة:
Server: 10.43.0.10
Address: 10.43.0.10#53
Name: soc-redis-10f420c389ef.d62f9886-fced-4cf2-98e4-5b62000d4f03.svc.cluster.local
Address: 10.42.5.99
# 2. فحص الخدمة الخلفية
nslookup soc-backend-d1895c70f6b2
# النتيجة:
Address: 10.42.5.103
# 3. فحص البوابة
nslookup soc-gateway-28cd1dc4e034
# النتيجة:
Address: 10.42.5.101
# 4. فحص النطاقات غير الموجودة (Negative Handling)
nslookup non-existent-service-mesh.local
# النتيجة: NXDOMAIN (تمت المعالجة بشكل قياسي وسليم)
- النتيجة: PASS (100%) - أسماء الخدمات تُحلل بالكامل إلى عناوين الـ Overlay IP المناسبة عبر خادم CoreDNS.
3.2 اختبارات مآخذ TCP الخام وبروتوكول Redis (Raw TCP Socket Testing)
تم إرسال حزم TCP خام غير مشفرة (RESP Protocol) عبر المنفذ 6379:
# 1. فحص فتح المنفذ عبر اسم النطاق الداخلي
nc -zv -w 3 soc-redis-10f420c389ef 6379
# الناتج: soc-redis-10f420c389ef (10.42.5.99:6379) open
# 2. مصافحة PING/PONG عبر Raw TCP
printf "*1\r\n\$4\r\nPING\r\n" | nc -w 3 soc-redis-10f420c389ef 6379
# الناتج: +PONG
# 3. كتابة حدث أمني (Threat Security Event)
printf "*3\r\n\$3\r\nSET\r\n\$16\r\nsoc:threat:id001\r\n\$35\r\nCRITICAL_RANSOMWARE_BLOCKED_ON_MESH\r\n" | nc -w 3 soc-redis-10f420c389ef 6379
# الناتج: +OK
# 4. قراءة الحدث الأمني
printf "*2\r\n\$3\r\nGET\r\n\$16\r\nsoc:threat:id001\r\n" | nc -w 3 soc-redis-10f420c389ef 6379
# الناتج:
$35
CRITICAL_RANSOMWARE_BLOCKED_ON_MESH
- النتيجة: PASS (100%) - اتصال TCP المباشر يعمل بكفاءة متناهية، وأزمنة الاستجابة شبه صفرية (< 1ms).
3.3 اختبار الاتصال البيني (Inter-Service Mesh Communication)
تم توجيه أوامر اتصال مباشرة من حاوية بوابة الحافة (soc-gateway) إلى الحاويات الخاصة:
- اتصال مباشر من
soc-gatewayإلىsoc-redis:6379: استجابت بـ+PONG. - اتصال مباشر من
soc-gatewayإلىsoc-backend:7681: تم تأكيد أن المنفذopen. - النتيجة: PASS (100%) - قنوات الاتصال البينية مفتوحة وسلسة عبر الـ Mesh.
4. تقرير اختبارات الاختراق والأمان (Security & Penetration Testing)
جدول نتائج الفحص الأمني (Matrix):
| نوع الفحص الأمني | الهدف المجرّب | النتيجة الفنية | مستوى الخطورة | التقييم |
|---|---|---|---|---|
| Intra-Tenant Project Isolation | test-redis-feccbaec5bd7 (مشروع آخر) |
REACHABLE (TCP 6379 OPEN) | Medium / High | ⚠️ غياب العزل الشبكي بين مشاريع الحساب الواحد |
| Intra-Tenant Web Isolation | auth-deploy-4c0bca85312b (مشروع آخر) |
REACHABLE (HTTP 200: <h1>test</h1>) |
Medium / High | ⚠️ إمكانية التحرك الجانبي وسحب بيانات مشاريع أخرى |
| Database Public Exposure | https://soc-redis-10f420c389ef.hosted... |
BLOCKED (HTTP 404) | Secure | ✅ قاعدة البيانات محجوبة عن الإنترنت الخارجي |
| Kubernetes API Protection | https://10.43.0.1:443/version |
401 Unauthorized | Secure | ✅ خادم تحكم الكلاستر محمي بصلاحيات RBAC |
| Cloud Metadata Protection | http://169.254.169.254/ |
BLOCKED / TIMEOUT | Secure | ✅ حماية تامة من هجمات SSRF واختطاف التوكنات |
| CoreDNS Telemetry Exposure | http://10.43.0.10:9153/metrics |
EXPOSED (Build/Cache Metrics) | Low | ℹ️ قياسات Prometheus مكشوفة داخلياً بدون توثيق |
| Outbound Egress NAT | api.ipify.org |
NAT IP: 184.107.141.203 |
Info | ℹ️ موفر الخدمة: Leaseweb Canada (MTL2) |
4.1 تفاصيل الثغرة الأمنية المعمارية (Intra-Tenant Lateral Movement)
- وصف الثغرة: في منصة Ghaymah، يتم إنشاء كافة المشاريع التابعة لنفس حساب المستخدم داخل مساحة أسماء Kubernetes واحدة مشتركة (
namespace: d62f9886-fced-4cf2-98e4-5b62000d4f03). لا يتم تطبيق قواعدNetworkPolicyلعزل المشاريع برمجياً. - سيناريو الهجوم الواقعي: إذا تم اختراق أي حاوية ويب في مشروع تجريبي أو ثانوي للمستخدم، يستطيع المهاجم الوصول فوراً إلى قواعد البيانات والخدمات الحساسة في المشاريع الأخرى التابعة لنفس الحساب دون أي عائق شبكي.
- التوصية الأمنية لمنصة غيمة (Recommendation):
- إنشاء Kubernetes Namespace منفصل لكل مشروع (
project-id) بدلاً من مشاركة مساحة الاسم العامة للمستخدم. - أو تطبيق سياسات شبكية افتراضية (
Default-Deny Ingress NetworkPolicy) مع السماح فقط بالحركة المرورية بين الحاويات التي تحمل نفس ملصق المشروع (project.ghaymah.systems/id).
- إنشاء Kubernetes Namespace منفصل لكل مشروع (
5. حالة مستودع Git والتكامل مع GitPasha
- تم تسجيل كافة ملفات الاختبار، السكربتات التنفيذية، ملفات التوبولوجيا، وسجلات التشغيل الكاملة داخل المستودع الخاص المنعزل:
- GitPasha URL:
https://app.gitpasha.com/Ziad_Abdelgwad/ghaymah-dns-net-sec-tests.git - Commit Log: موثق ومحدث بالكامل.
- مستودع
cuminالأصلي: نظيف بنسبة 100% ولم يتم التعديل عليه أو مساسه بأي ملفات خارجية.
- GitPasha URL: