
كاشف Mongobleed CVE-2025-14847
ماسح احترافي للثغرة الأمنية CVE-2025-14847 (MongoBleed) - ثغرة تسرب الذاكرة في MongoDB.
+================================================================+
| MongoBleed Scanner v1.3.0 |
| CVE-2025-14847 - MongoDB Memory Leak Vulnerability |
+================================================================+
CVE-2025-14847 (MongoBleed) هي ثغرة حرجة في تسرب الذاكرة في معالجة ضغط zlib في MongoDB.
عند معالجة الرسائل المضغوطة (OP_COMPRESSED مع zlib)، يقوم MongoDB بتخصيص مخزن مؤقت بناءً على حقل uncompressedSize الذي يقدمه العميل. يمكن للعميل الخبيث تحديد حجم أكبر من البيانات الفعلية، مما يؤدي إلى إعادة MongoDB لذاكرة كومة غير مهيأة تحتوي على بيانات حساسة من العمليات السابقة.
لا حاجة لحزم إضافية. يستخدم الماسح مكتبة بايثون القياسية فقط.
# المنفذ الافتراضي (27017)
python scanner.py -t 192.168.1.100
# منفذ مخصص
python scanner.py -t 192.168.1.100:27018
# مفصولة بفواصل
python scanner.py -t 192.168.1.100,192.168.1.101:27018,db.example.com
# targets.txt (واحد لكل سطر، # للتعليقات)
# 192.168.1.100
# 192.168.1.101:27018
# mongodb.example.com
python scanner.py -f targets.txt
# نص عادي
python scanner.py -t 192.168.1.100 -o report.txt
# JSON (مفصل)
python scanner.py -t 192.168.1.100 -o report.json
# CSV (جدول بيانات)
python scanner.py -t 192.168.1.100 -o report.csv
+================================================================+
| MongoBleed Scanner v1.3.0 |
| CVE-2025-14847 - MongoDB Memory Leak Vulnerability |
+================================================================+
| LEGAL: Authorized security testing only. Obtain permission |
| before scanning systems you do not own. |
+================================================================+
[*] Loaded 4 target(s)
SCAN RESULTS:
----------------------------------------------------------------------
[!] 192.168.1.100:27017 VULNERABLE v8.0.16 zlib:ON -> Update to 8.0.17
[?!] 192.168.1.101:27018 POSSIBLY VULNERABLE v~8.2.x zlib:ON -> Check version, update to 8.2.3
[+] 192.168.1.102:27017 SAFE v8.0.17 zlib:ON
[~] 192.168.1.103:27017 MITIGATED v8.0.16 zlib:OFF (zlib disabled)
======================================================================
SCAN SUMMARY
======================================================================
Total targets scanned: 4
Reachable: 4
Unreachable: 0
----------------------------------------------------------------------
[!] VULNERABLE: 1
[?!] POSSIBLY VULN: 1 (version estimated, needs verification)
[+] SAFE (patched): 1
[~] MITIGATED: 1 (vulnerable version but zlib disabled)
[?] UNKNOWN: 0
======================================================================
VULNERABLE TARGETS REQUIRING IMMEDIATE ACTION:
----------------------------------------------------------------------
192.168.1.100:27017 v8.0.16 zlib:ON -> Upgrade to 8.0.17
v8.0.16 — الإصدار الدقيق المكتشفv~8.2.x — مقدر من البروتوكول السلكي (~ يشير إلى تقدير)يحدث التقدير عندما يتطلب MongoDB 8.2+ المصادقة لأوامر الإصدار. يتراجع الماسح إلى تعيين إصدار البروتوكول السلكي.
1. TCP Connection
└── Connect to MongoDB port
2. Version Detection
├── Send 'hello' command (get wire version, no auth required)
└── Send 'buildInfo' command (get exact version, may need auth)
3. Compression Check
└── Send zlib-compressed message, check if server accepts
4. Assessment
└── Compare version + zlib status against vulnerability database
عند عدم توفر الإصدار الدقيق (المصادقة مطلوبة)، يقدر الماسح الإصدار من maxWireVersion:
| إصدار السلك | فرع MongoDB |
|---|---|
| 25 | 8.0.x |
| 27 | 8.2.x |
| 21 | 7.0.x |
| 17 | 6.0.x |
| 13 | 5.0.x |
VULNERABLE = (version in vulnerable range) AND (zlib enabled)
MITIGATED = (version in vulnerable range) AND (zlib disabled)
SAFE = (version >= fixed version)
# mongod.conf
net:
compression:
compressors: snappy,zstd # Remove 'zlib'
أو عبر سطر الأوامر:
mongod --networkMessageCompressors snappy,zstd
THIS TOOL IS PROVIDED FOR AUTHORIZED SECURITY TESTING ONLY.
You must obtain proper authorization before scanning any systems
you do not own or have explicit written permission to test.
Unauthorized access to computer systems is illegal.
The authors assume no liability for misuse of this tool.
| الرمز | المعنى |
|---|---|
| 0 | جميع الأهداف آمنة أو مخففة |
| 1 | حدثت أخطاء في الاتصال |
| 2 | تم العثور على أهداف ضعيفة |
مفيد للبرمجة النصية:
python scanner.py -t mongodb.example.com
if [ $? -eq 2 ]; then
echo "ALERT: Vulnerable MongoDB detected!"
fi
لأغراض الاختبارات الأمنية المصرح بها والبحث فقط.
| الفرع | الإصدارات المعرضة | الإصدار المُصحّح |
|---|
| 8.2.x | 8.2.0 - 8.2.2 | 8.2.3 |
| 8.0.x | 8.0.0 - 8.0.16 | 8.0.17 |
| 7.0.x | 7.0.0 - 7.0.27 | 7.0.28 |
| 6.0.x | 6.0.0 - 6.0.26 | 6.0.27 |
| 5.0.x | 5.0.0 - 5.0.31 | 5.0.32 |
| 4.4.x | 4.4.0 - 4.4.29 | 4.4.30 |
| ≤4.2 | جميع الإصدارات | نهاية الدعم - لا يوجد تصحيح |
| الخيار | الوصف |
|---|
-t, --targets | الأهداف مفصولة بفواصل (مضيف أو مضيف:منفذ) |
-f, --file | ملف يحتوي على الأهداف (واحد لكل سطر) |
-o, --output | ملف التصدير (.txt, .json, .csv) |
-q, --quiet | عرض الملخص فقط |
-v, --version | عرض الإصدار |
-h, --help | عرض المساعدة |
| الرمز | الحالة | الوصف |
|---|
[!] | ضعيف | مؤكد الضعف، إجراء فوري مطلوب |
[?!] | ضعيف محتمل | الإصدار مقدر، يحتاج تحقق يدوي |
[+] | آمن | الإصدار مصحح |
[~] | مخفف | إصدار ضعيف ولكن zlib معطل |
[?] | غير معروف | لم يمكن تحديد الحالة |
[-] | غير قابل للوصول | فشل الاتصال |
| الإصدار الحالي | التحديث إلى |
|---|
| 8.2.0 - 8.2.2 | 8.2.3+ |
| 8.0.0 - 8.0.16 | 8.0.17+ |
| 7.0.0 - 7.0.27 | 7.0.28+ |
| 6.0.0 - 6.0.26 | 6.0.27+ |
| 5.0.0 - 5.0.31 | 5.0.32+ |
| 4.4.0 - 4.4.29 | 4.4.30+ |