Files
ghaymah-dns-net-sec-tests/reports/GHAYMAH_MULTI_MICROSERVICES_SECURITY_REPORT.md
T

12 KiB
Raw Blame History

تقرير الفحص والتقييم الأمني والمعماري الشامل لمشروع المايكروسيرفيس على منصة غيمة

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).

أبرز النتائج الفنية والأمنية:

  1. نجاح منظومة الـ Internal DNS: أثبتت الاختبارات أن نظام أسماء النطاقات الداخلي (CoreDNS @ 10.43.0.10:53) يتعرف ويحلل أسماء الحاويات بشكل ديناميكي عبر المعرف الفريد [name]-[hash12] (مثل soc-redis-10f420c389ef -> 10.42.5.99).
  2. نجاح الاتصال عبر مآخذ TCP المباشرة (Raw TCP Sockets): أثبتت الاختبارات نجاح الربط غير المعتمد على HTTP (Raw TCP على المنفذ 6379) مع قاعدة بيانات soc-redis وتنفيذ عمليات المصافحة وكتابة وقراءة التهديدات الأمنية بنسبة نجاح 100%.
  3. تكامل الاتصال بين الحاويات (Inter-Service Mesh Hops): تم إثبات قدرة بوابة الحافة soc-gateway على مخاطبة قاعدة البيانات soc-redis والحاوية الخلفية soc-backend مباشرة عبر الـ Internal DNS والـ Private Overlay Network دون أي وسيط خارجي.
  4. ثغرة معمارية في العزل بين المشاريع (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>).
  5. سلامة العزل الخارجي ومحيط الكلاستر (Perimeter & Cluster Security):
    • محاولة الوصول غير المصرح إلى Kubernetes API (10.43.0.1:443) رُفضت برمز 401 Unauthorized (صلاحيات RBAC محكمة).
    • عنوان بيانات السحابة التعريفية (AWS/Cloud Metadata @ 169.254.169.254) محجوب وغير قابل للوصول (حماية ممتازة ضد SSRF).
    • خدمات قاعدة البيانات الخاصة غير معروضة إطلاقاً على الإنترنت العام (HTTP 404).

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):
    1. إنشاء Kubernetes Namespace منفصل لكل مشروع (project-id) بدلاً من مشاركة مساحة الاسم العامة للمستخدم.
    2. أو تطبيق سياسات شبكية افتراضية (Default-Deny Ingress NetworkPolicy) مع السماح فقط بالحركة المرورية بين الحاويات التي تحمل نفس ملصق المشروع (project.ghaymah.systems/id).

5. حالة مستودع Git والتكامل مع GitPasha

  • تم تسجيل كافة ملفات الاختبار، السكربتات التنفيذية، ملفات التوبولوجيا، وسجلات التشغيل الكاملة داخل المستودع الخاص المنعزل:
    • GitPasha URL: https://app.gitpasha.com/Ziad_Abdelgwad/ghaymah-dns-net-sec-tests.git
    • Commit Log: موثق ومحدث بالكامل.
    • مستودع cumin الأصلي: نظيف بنسبة 100% ولم يتم التعديل عليه أو مساسه بأي ملفات خارجية.