- MongoBleed(CVE-2025-14847) 2017 के बाद से सभी MongoDB versions में मौजूद एक गंभीर memory leak भेद्यता है, जिससे हमलावर database की heap memory के arbitrary data को पढ़ सकते हैं
- यह भेद्यता zlib compression path के bug के कारण होती है, और बिना authentication के सिर्फ database से connect करके इसका दुरुपयोग किया जा सकता है
- हमलावर manipulated compressed request भेजकर server को गलत आकार का buffer allocate करने के लिए मजबूर कर सकता है, और उसके भीतर की पिछले कार्यों की memory (password, API key आदि) को उजागर कर सकता है
- MongoDB ने 19 दिसंबर 2025 को patch जारी किया, लेकिन EOL versions (3.6, 4.0, 4.2) को ठीक नहीं किया गया
- 8 वर्षों से मौजूद यह भेद्यता इंटरनेट पर एक्सपोज़ 2.1 लाख से अधिक MongoDB instances को प्रभावित करती है, और cloud व on-premise दोनों environments में तुरंत patch या compression disable करना ज़रूरी है
MongoBleed का अवलोकन
- MongoBleed(CVE-2025-14847) MongoDB के zlib 1 message compression path में पाई गई भेद्यता है, जो 2017 के बाद के सभी versions को प्रभावित करती है
- हमलावर बिना authentication के केवल database से connect करके arbitrary heap memory data पढ़ सकता है
- MongoDB 3.6, 4.0, 4.2 जैसे end-of-life (EOL) versions को ठीक नहीं किया गया
- यह bug मई 2017 के PR में introduce किया गया था, और 19 दिसंबर 2025 को आधिकारिक रूप से सार्वजनिक किया गया
- MongoDB ने घोषणा की कि Atlas cloud service सहित सभी instances पर patch लागू कर दिया गया है
MongoDB communication structure
- MongoDB HTTP के बजाय अपना TCP protocol इस्तेमाल करता है, और messages BSON(Binary JSON) फ़ॉर्मेट में भेजे जाते हैं
- सभी requests OP_MSG command से बनी होती हैं, और compression के समय उन्हें OP_COMPRESSED message में wrap किया जाता है
- message में
uncompressedSize, originalOpcode, compressorId जैसे fields शामिल होते हैं
uncompressedSize decompression के बाद अपेक्षित आकार को दिखाता है
Exploit चरण 1 — गलत buffer allocation
- हमलावर
uncompressedSize value को वास्तविक आकार से काफी बड़ा सेट करके server से बड़ा buffer allocate करवाता है
- उदाहरण: वास्तविक 1KB message को 1MB घोषित करना
- MongoDB server decompression के बाद वास्तविक आकार को verify किए बिना user द्वारा दिए गए आकार पर भरोसा करता है
- नतीजतन memory में
[वास्तविक data | unreferenced heap garbage] जैसी संरचना बची रहती है
- C++-आधारित MongoDB memory initialization नहीं करता, इसलिए इस क्षेत्र में पिछले कार्यों का sensitive data मौजूद हो सकता है
- उदाहरण: password, session token, API key, customer data, system settings आदि
Exploit चरण 2 — data leak
- हमलावर गलत BSON input भेजकर server को memory के garbage data को string की तरह parse करने के लिए प्रेरित करता है
- BSON का पहला field string होता है, और C language के null-terminated string नियम का पालन करता है
- अगर हमलावर null terminator के बिना string भेजता है, तो server memory में मौजूद अन्य data भी पढ़ लेता है
- उदाहरण:
[ { "a | password: 123\0 | apiKey: jA2sa | ip: 219.117.127.202 ]
- server इसे गलत BSON field मानकर error message में वही सामग्री शामिल करके response देता है
"errmsg": "invalid BSON field name 'a | password: 123'"
- इस प्रक्रिया को दोहराकर हमलावर पूरी heap memory को scan करते हुए sensitive information इकट्ठा कर सकता है
प्रभाव और जोखिम
- यह pre-auth चरण में होता है, इसलिए हमलावर बिना login के data तक पहुँच सकता है
- इंटरनेट पर एक्सपोज़ MongoDB instances तुरंत जोखिम में हैं
- Shodan search के अनुसार 213,000 से अधिक MongoDB instances सार्वजनिक रूप से उपलब्ध हैं
- 2017 से 2025 तक लगभग 8 साल तक मौजूद इस भेद्यता के वास्तविक exploit होने की संभावना इसकी सरल संरचना के कारण अधिक है
- MongoDB ने कहा कि “अब तक exploit का कोई प्रमाण नहीं है”, लेकिन औपचारिक माफ़ी या विस्तृत timeline सार्वजनिक नहीं की गई
Mitigation तरीके
- नवीनतम patched version (8.0.17 या उससे ऊपर) में update करें
- अल्पकालिक उपाय के रूप में zlib network compression disable करके भी जोखिम कम किया जा सकता है
- MongoDB Atlas users पर patch पहले ही लागू किया जा चुका है
अतिरिक्त जानकारी और संबंधित चर्चा
- Elastic security team lead ने इसका नाम ‘MongoBleed’ रखा और PoC(Python script) प्रकाशित किया
- MongoDB और Elastic search और analytics functionality के क्षेत्र में प्रतिस्पर्धी हैं
- संबंधित resources:
सारांश
- MongoBleed, zlib compression handling bug के कारण पैदा हुई एक memory leak भेद्यता है
- हमलावर manipulated compressed request के जरिए पिछली memory का data (password, API key आदि) हासिल कर सकता है
- 2017~2025 के सभी MongoDB versions प्रभावित हैं, और patch या compression disable करना अनिवार्य है
- इंटरनेट पर एक्सपोज़ 2.1 लाख से अधिक instances संभावित प्रभावित लक्ष्य हैं
- MongoDB ने patch जारी किया है, लेकिन EOL versions के लिए support न होना और सार्वजनिक प्रतिक्रिया में देरी पर सवाल उठे हैं
अभी कोई टिप्पणी नहीं है.