
مختبر مُحَوْل للحاويات على نمط المؤسسات للبحث والدفاع ضد CVE-2026-27483.
مختبر كامل وواقعي بأسلوب المؤسسات مبني على Docker لتعلم واختبار والدفاع ضد CVE-2026-27483 (MindsDB Path Traversal → RCE). يوفر هذا المستودع بنية مختبر قابلة للنشر، وملفات إعدادات، وصور حاويات مصغّرة، وقواعد كشف، وسكربتات مساعدة حتى تتمكن من تشغيل بيئة معزولة بأمان لممارسة الاكتشاف والاستغلال (منقّح) والدفاع.
مهم: يتضمن هذا المختبر عمدًا إصدارًا ضعيفًا من MindsDB لأغراض تعليمية. قم بتشغيله فقط في بيئات معزولة وغير متصلة بالإنترنت ولا تعرّضه أبدًا للشبكات العامة.
Internet (Attacker)
↓
Reverse Proxy (nginx)
↓
┌─────────────────────────────────┐
│ MindsDB (Vulnerable) │ Port 47334
│ - Vulnerable to CVE-2026-27483 │
└─────────────────────────────────┘
↓
┌─────────────────────────────────┐
│ PostgreSQL Database │ Port 5432 (internal)
│ - Stores MindsDB data │
└─────────────────────────────────┘
↓
┌─────────────────────────────────┐
│ ELK Stack (Logging) │
│ - Elasticsearch, Logstash │ Ports 9200, 5000
│ - Kibana Dashboard │ Port 5601
└─────────────────────────────────┘
الخدمات متصلة عبر شبكة Docker bridge مخصصة (172.20.0.0/16 افتراضيًا). يتم تضمين حاوية مهاجم لتنفيذ محاولات استغلال مُتحكم بها ضد خدمة MindsDB المعزولة.
افتراضيًا، لا يُقصد تعريض Postgres للإنترنت العام. يقوم ملف compose بتعيين الخدمات الداخلية للاستخدام المحلي في المختبر.
المتطلبات الأساسية:
git clone https://github.com/nabhan-mohy/cve-2026-27483-lab.git
cd cve-2026-27483-lab
cp .env.example .env
# افتح .env وتأكد من DB_PASSWORD والقيم الأخرى
مهم: تأكد من أن DB_PASSWORD في .env يطابق كلمة المرور التي يتوقعها ملف compose. توجد قيمة افتراضية في docker-compose.yml (${DB_PASSWORD:-P@ssw0rd123!}). إما أن تضبط DB_PASSWORD=P@ssw0rd123! في .env أو عدّل docker-compose.yml لاستخدام كلمة المرور التي تفضلها. إذا لم تتطابق، سيفشل MindsDB في الاتصال بـ Postgres ولن تبدأ الخدمات بشكل صحيح.
(اختياري) عدّل .env لضبط السلوك (تفعيل/تعطيل الميزات، تعيين عنوان IP لمستمع المهاجم، إلخ).
ابدأ المختبر (الوضع الكامل):
docker compose up -d --build
curl http://localhost:47334/api/statushttp://localhost:5601http://localhost:8080docker compose down
لإزالة وحدات التخزين (مدمر):
docker compose down -v
يشير ملف README إلى ملفات شخصية للحد الأدنى والمراقبة. لدعم هذه الخيارات يمكنك إما:
profiles: في docker-compose.yml لفصل الخدمات إلى ملفات شخصية minimal و monitoring، أوdocker-compose.minimal.yml يعطل المكونات الثقيلة (Elasticsearch/Kibana/Wazuh) لاختبارات الموارد المنخفضة.نهج اختبار الحد الأدنى المقترح هو التعليق على أو تخطي Elasticsearch/Kibana/Wazuh وتشغيل فقط: mindsdb و postgres و nginx-proxy و attacker.
الوكيل العكسي (nginx-proxy): يعمل كنقطة نهاية مواجهة للخارج ويوجّه حركة مرور المهاجم إلى خدمة MindsDB الضعيفة. يوفر الوكيل أيضًا منفذ لوحة تحكم بسيط (8080) لفحوصات سريعة.
MindsDB (صورة ضعيفة): معبأ من الإصدار الضعيف المشار إليه في ملف README. يخزن البيانات في Postgres ويوفر نقاط نهاية API ضعيفة عمدًا في الإصدارات الأقدم.
Postgres: يخزن تكوين MindsDB والقطع الأثرية. يتم توفير SQL التهيئة وبيانات البذور في configs/postgres/*.sql.
حزمة ELK (Elasticsearch, Logstash, Kibana): تجمع السجلات من الوكيل والتطبيق حتى تتمكن من بناء قواعد الكشف ولوحات المعلومات.
Wazuh (اختياري): وكيل ومدير مراقبة أمنية. مضمّن كعنصر نائب لتوضيح التكامل؛ شهادات TLS وبيانات الاعتماد في الإعداد هي عناصر نائبة ويجب توفيرها للوظائف الكاملة.
حاوية المهاجم: بيئة تحتوي على أدوات (curl, netcat, python) ومجلد exploits/ مثبت لتشغيل سكربتات التحدي من داخل نفس شبكة Docker (معزولة عن شبكة المضيف إذا رغبت).
خدمة النسخ الاحتياطي: حاوية نموذجية لتوضيح سير عمل المؤسسات الواقعي (نسخ احتياطية تسحب تفريغات قاعدة البيانات من Postgres).
docker compose exec -it attacker /bin/bash)، نفّذ استطلاعًا ضد الوكيل (المنفذ 80/8080) وواجهة MindsDB API (47334).exploits/ و docs/challenges/ مع إرشادات وفحوصات آمنة.مثال: نفّذ استطلاعًا أساسيًا من حاوية المهاجم
# ادخل إلى حاوية المهاجم
docker compose exec -it attacker /bin/bash
# افحص الشبكة أو استخدم curl على نقاط النهاية
curl -v http://nginx-proxy:80/
curl -v http://mindsdb:47334/api/status
يتم توفير سكربت اختبار دخان في scripts/smoke_test.sh (إذا كان موجودًا). يقوم بالفحوصات التالية:
/api/statuspg_isreadyشغّله محليًا:
chmod +x scripts/smoke_test.sh
./scripts/smoke_test.sh
إذا فشل اختبار الدخان، اجمع السجلات في smoke_compose_logs.txt وشاركها لتصحيح الأخطاء:
docker compose logs --no-color > smoke_compose_logs.txt
يتم توفير خط أنابيب Logstash في configs/logstash/logstash.conf لإعادة توجيه السجلات إلى Elasticsearch. قاعدة Sigma المضمنة rules/sigma/cve-2026-27483.yml هي مثال بسيط يعلّم أنماط اجتياز المسار المشبوهة (طلبات تحتوي على ..). استخدمها كنقطة بداية وحسّنها لتقليل النتائج الإيجابية الخاطئة.
أنشئ لوحات معلومات Kibana لتصور:
.env و docker-compose.yml. تأكد من اتفاقهما على نفس السر.docker compose logs -f mindsdb بحثًا عن تتبعات المكدس وأخطاء اتصال قاعدة البيانات.ES_JAVA_OPTS في docker-compose.yml (مثال: -Xms256m -Xmx256m) للمضيفات الصغيرة.mindsdb:47334) وأن حاوية mindsdb سليمة.إذا كنت بحاجة إلى مساعدة في تصحيح الأخطاء، شغّل اختبار الدخان وشارك smoke_compose_logs.txt.
المساهمات مرحب بها. الطرق المقترحة للمساعدة:
docs/ (النشر، التحديات، الكشف، الاستجابة للحوادث)exploits/ مع أدلة تعلم خطوة بخطوةيرجى فتح PRs ضد main واتباع إرشادات CONTRIBUTING عند إضافة مواد استغلال تعليمية.
صُنع بـ ❤️ لمجتمع الأمن.