C++ लाइब्रेरी libxml2 में गंभीर कमजोरी का पता चला: हजारों प्रोजेक्ट्स के लिए खतरा
C++ डेवलपर समुदाय व्यापक रूप से उपयोग की जाने वाली लाइब्रेरी libxml2 में एक गंभीर कमजोरी का पता चलने की खबर से स्तब्ध है। यह लाइब्रेरी, जो C और C++ प्रोजेक्ट्स में XML दस्तावेज़ों को पार्स करने का डी-फैक्टो मानक है, Linux, macOS ऑपरेटिंग सिस्टम, वेब ब्राउज़र, ऑफिस सुइट और अनगिनत एप्लीकेशन सॉफ़्टवेयर में उपयोग की जाती है। इस कमजोरी को पहचानकर्ता CVE-2024-XXXX (नंबर आवंटित, विवरण अपेक्षित) प्राप्त हुआ है, जो हमलावर को लक्ष्य प्रणाली पर मनमाना कोड निष्पादित करने की अनुमति देता है।
समस्या का सार
Project Zero टीम के शोधकर्ताओं ने पाया कि त्रुटि XML दस्तावेज़ों में पुनरावर्ती संस्थाओं (entities) को संसाधित करने की प्रक्रिया में है। एक विशेष रूप से तैयार किए गए XML फ़ाइल को संसाधित करते समय, जिसमें बाहरी संस्थाओं के नेस्टेड संदर्भ होते हैं, हीप बफर ओवरफ़्लो (heap buffer overflow) होता है। इससे मेमोरी खराब हो जाती है और, सुरक्षा स्टैक के आधार पर, वर्तमान प्रक्रिया के विशेषाधिकारों के साथ मनमाना कोड निष्पादित करने की संभावना बनती है।
इस कमजोरी की विशेषता यह है कि संस्थाओं के विस्तार (XML_PARSE_NOENT) विकल्प को चालू किए बिना भी हमला संभव है। xmlReadFile() या xmlParseDoc() फ़ंक्शन के साथ मानक पार्सिंग तब कमजोर हो जाती है जब इनपुट XML दस्तावेज़ में दुर्भावनापूर्ण संरचना होती है।
कौन खतरे में है?
libxml2 का उपयोग करने वाले प्रोजेक्ट्स की सूची बहुत बड़ी है। सीधे खतरे में निम्नलिखित हैं:
- ब्राउज़र: Chrome (SVG और XHTML पार्सिंग के माध्यम से), Safari, Firefox, और उनके डेरिवेटिव।
- प्रोग्रामिंग भाषाएँ: Python (lxml लाइब्रेरी), Ruby (libxml-ruby), PHP (DOM/SimpleXML एक्सटेंशन)।
- सिस्टम उपयोगिताएँ: पैकेज मैनेजर (apt, yum), बिल्ड सिस्टम (CMake, Meson) और कॉन्फ़िगरेशन टूल।
- ऑफिस सुइट: LibreOffice, OpenOffice (ODF, DOCX फ़ॉर्मेट में दस्तावेज़ आयात करने के लिए)।
सुरक्षा के लिए सिफारिशें
C++ डेवलपर्स और सिस्टम एडमिनिस्ट्रेटर को निम्नलिखित कदम उठाने की दृढ़ता से सलाह दी जाती है:
- लाइब्रेरी अपडेट करें: तुरंत libxml2 को संस्करण 2.13.2 या उससे नए में अपडेट करें। पैच आधिकारिक रिपॉजिटरी में जारी कर दिया गया है।
- निर्भरताएँ जाँचें: यदि आप पैकेज मैनेजर (vcpkg, Conan) का उपयोग करते हैं, तो अपने मैनेजर के लिए
vcpkg upgrade libxml2या समान कमांड चलाएँ। - सैंडबॉक्स सक्षम करें: उपयोगकर्ता XML पार्स करने वाले सर्वर एप्लिकेशन के लिए, पार्सर को न्यूनतम विशेषाधिकारों के साथ एक अलग वातावरण (chroot, Docker) में चलाने की सिफारिश की जाती है।
- अप्रयुक्त फ़ंक्शन अक्षम करें: कोड में
xmlCtxtUseOptions(parser_ctxt, XML_PARSE_HUGE | XML_PARSE_NOENT | XML_PARSE_DTDLOAD)का उपयोग केवल अत्यधिक आवश्यकता होने पर ही करें।
अतिरिक्त सुरक्षा के लिए, DTD स्कीमा के साथ XML दस्तावेज़ों का प्रारंभिक सत्यापन लागू किया जा सकता है। हालाँकि, यह इस विशिष्ट कमजोरी से पूर्ण सुरक्षा नहीं है - केवल नवीनतम संस्करण में अपडेट करना ही सुरक्षा की गारंटी देता है।