
CVE-2025-14847 شرح ومختبر
المرجع CVE : CVE-2025-14847
هذا المستودع هو مختبر تعليمي يوضح المفهوم الكامن وراء فئة من المشكلات التي غالبًا ما تُوصف بأنها "تأطير الضغط / كشف حجم البيانات الوصفية للذاكرة" في بروتوكولات نقل قواعد البيانات.
تم كتابته لدعم الفهم الدفاعي: كيف يتم التفاوض على ضغط شبكة MongoDB وتأطيرها، ولماذا حقول الحجم مهمة، وكيف تمنع المحللات القوية تعرّض الذاكرة غير المقصود.
ملاحظة حول مرجع CVE: تم تأطير هذا المختبر حول الفكرة المشار إليها باسم CVE-2025-14847. هذا المستودع لا يتحقق من صحة أو يعيد إنتاج أو يستغل خطأ بائع معين أو يدّعي تأثر أي إصدار معين من MongoDB. يركز على نمط الفشل العام (عدم تطابق حجم البيانات الوصفية حول الحمولات المضغوطة) والتخفيفات.
هذا المستودع لا يتضمن (ولا ينبغي استخدامه كدليل) للإصدارات المعرضة للخطر أو المصححة من MongoDB لأي CVE معين.
لتوثيق الإصدارات "المعرضة للخطر" مقابل "المصححة" بشكل صحيح لتقرير، استخدم إرشادات البائع الرسمية / ملاحظات الإصدار الخاصة بـ CVE واستشهد بها.
خطوات عملية للتحقق مما تقوم بتشغيله:
docker compose exec mongodb mongod --versiondocker compose exec mongodb mongosh --quiet --eval "db.version()"mongod --versionmongosh --quiet --eval "db.version()"إذا شاركت رابط الإرشادات الذي تستخدمه، يمكنني تنسيق جدول "المتأثر / المُصحح" نظيف في README دون تخمين.
يوضح هذا المختبر نمط فشل تأطير الضغط / عدم تطابق حجم البيانات الوصفية:
OP_COMPRESSED المزيد من حقول الحجم (طول الرسالة الخارجية، الحجم المعلن غير المضغوط، والطول الخاص بالرسالة الداخلية).راجع protocol_overview.md للحصول على شرح تفصيلي للتأطير.
بحلول نهاية المختبر، يجب أن تكون قادرًا على:
يفعل:
hello غير مضغوط يتضمن compression: ["zlib"]OP_COMPRESSED مؤطرة بشكل صحيح باستخدام zlibلا يفعل:
docker-compose.yml – تشغيل حاوية MongoDB مع تمكين ضغط zlib وتعريض للمضيف المحلي فقط.protocol_overview.md – بروتوكول النقل + BSON + سير عمل الضغط + شرح الثغرة المفاهيمي.mitigation.md – إرشادات الدفاع: التصحيح، التكوين، وأفكار الكشف.lab_probe.py – مسبار أصلي يتفاوض على الضغط ويسجل أحجام الرسائل بأمان.من دليل هذا المستودع:
docker compose up -d
تأكد من أنه يعمل:
docker compose ps
python .\lab_probe.py
المخرجات المتوقعة:
hellohello مضغوط وتسجيل أحجام الرسالة المضغوطة والمفكوكةpython .\lab_probe.py --toy-demo
يقوم هذا بتشغيل فحوصات تحليل محلية فقط لتوضيح سبب أهمية التحقق من الحجم.
docker compose down
127.0.0.1:27017 على المضيف.