
MongoBleed: CVE-2025-14847 أداة اكتشاف تسرب الذاكرة
MongoBleed هي أداة تدقيق أمني عالية الأداء مصممة لاكتشاف وإظهار CVE-2025-14847. تسمح هذه الثغرة لمهاجم غير مصادق عن بعد بتسريب أجزاء من ذاكرة heap غير المهيأة من خادم MongoDB من خلال استغلال خلل في عدم تطابق الطول في منطق فك ضغط zlib.
لاختبار هذا السكريت بأمان، استخدم ملف docker-compose.yml التالي لتشغيل مثيل MongoDB 8.2.2 ضعيف.
قم بتشغيل المثيل باستخدام:
docker-compose up -d
تأكد من تثبيت Python 3.8+. لا حاجة لمكتبات خارجية (يستخدم socket و zlib و concurrent.futures المدمجة).
فحص أساسي
python mongobleed.py --host 127.0.0.1 --port 27017
خيارات متقدمة
python mongobleed.py --host 127.0.0.1 --threads 50 --range 100 10000 --output leak_dump.bin
يرسل السكريت رسالة OP_COMPRESSED (opcode 2012) مصمَّمة. يكذب بشأن الطول غير المضغوط للبيانات. يخصص خادم MongoDB مخزنًا مؤقتًا في heap بحجم الطول "المكذوب"، ويفك ضغط كمية ضئيلة من البيانات فيه، ثم يعيد عن طريق الخطأ المخزن المؤقت غير المهيأ بالكامل إلى العميل.
الطريقة الوحيدة الدائمة لحل CVE-2025-14847 هي ترقية ثنائي MongoDB إلى إصدار يتضمن إصلاحًا لمنطق التحقق من طول OP_COMPRESSED.
الإصلاح الدائم (الترقية)
قم بتطبيق التصحيحات الرسمية من MongoDB. تتضمن هذه الإصدارات فحصًا إلزاميًا لضمان تطابق حجم البيانات المفكوكة مع حقل uncompressedSize في رأس الرسالة.
إذا لم تكن الترقية الفورية ممكنة بسبب متطلبات وقت التشغيل، يمكنك حجب ناقل الهجوم عن طريق تعديل تكوين الخادم.
تعطيل الضاغط الضعيف (موصى به)
تكون الثغرة محددة بتطبيق zlib. يمكنك تعطيل zlib وإجبار الخادم على استخدام snappy أو zstd، والتي لا تتأثر بهذا الخلل الخاص بقراءة heap الزائدة.
عبر سطر الأوامر: أعد تشغيل مثيل mongod مع العلم التالي (لاحظ استبعاد zlib):
mongod --networkMessageCompressors snappy,zstd
عبر ملف التكوين (mongod.conf):
net:
compression:
compressors: snappy,zstd
هذه الأداة مخصصة للأغراض التعليمية واختبارات الأمان المصرح بها فقط. الوصول غير المصرح به إلى أنظمة الكمبيوتر غير قانوني. المؤلف غير مسؤول عن أي استخدام خاطئ لهذه الأداة. قم بتحديث مثيلات MongoDB الخاصة بك فورًا إلى الإصدارات 8.2.3+ أو 8.0.17+.
| الفرع الرئيسي | الإصدار الآمن الموصى به |
|---|
| MongoDB 8.2 | الترقية إلى 8.2.3 أو أحدث |
| MongoDB 8.0 | الترقية إلى 8.0.17 أو أحدث |
| MongoDB 7.0 | الترقية إلى 7.0.28 أو أحدث |
| MongoDB 6.0 | الترقية إلى 6.0.27 أو أحدث |
| MongoDB 5.0 | الترقية إلى 5.0.32 أو أحدث |
| MongoDB 4.0 | الترقية إلى 4.4.30 أو أحدث |