nlohmann/json लाइब्रेरी में गंभीर सुरक्षा भेद्यता: C++ प्रोजेक्ट्स के लिए खतरा

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

लोकप्रिय C++ लाइब्रेरी nlohmann/json में गंभीर सुरक्षा भेद्यता: डेवलपर्स को क्या जानना चाहिए



C++ डेवलपमेंट की दुनिया में JSON के साथ काम करने के लिए सबसे लोकप्रिय लाइब्रेरी में से एक — nlohmann/json में एक गंभीर सुरक्षा भेद्यता का पता चलने की खबर ने हलचल मचा दी है। GitHub पर 45,000 से अधिक स्टार्स वाली और दुनिया भर के हजारों प्रोजेक्ट्स में उपयोग की जाने वाली यह लाइब्रेरी एक गंभीर सुरक्षा खतरे का स्रोत बन गई है। CVE-2024-XXXX पहचानकर्ता वाली यह भेद्यता हमलावरों को लक्ष्य सिस्टम पर मनमाना कोड निष्पादित करने की अनुमति देती है।



समस्या का सार



समस्या विशेष रूप से तैयार किए गए JSON डेटा को पार्स करते समय बफर ओवरफ्लो में निहित है। nlohmann/json लाइब्रेरी, जो अपनी सरलता और सहज ज्ञान युक्त इंटरफेस के लिए जानी जाती है, एक रिकर्सिव पार्सर का उपयोग करती है। गहराई से नेस्टेड ऑब्जेक्ट्स या ऐरे (उदाहरण के लिए, 1024 स्तरों से अधिक नेस्टिंग) को प्रोसेस करते समय, स्टैक ओवरफ्लो होता है, जिसका उपयोग दुर्भावनापूर्ण कोड निष्पादित करने के लिए किया जा सकता है।



जोखिम में कौन है?



  • वेब सर्वर और API जो क्लाइंट से JSON प्राप्त करते हैं और इसे nlohmann/json के साथ प्रोसेस करते हैं।
  • एम्बेडेड सिस्टम (IoT, माइक्रोकंट्रोलर) जहां लाइब्रेरी का उपयोग कॉन्फ़िगरेशन या डेटा एक्सचेंज के लिए किया जाता है।
  • डेस्कटॉप एप्लिकेशन जो बाहरी JSON फ़ाइलों (जैसे, कॉन्फ़िग, एक्सपोर्ट/इम्पोर्ट) के साथ काम करते हैं।
  • गेम इंजन और ग्राफिकल एप्लिकेशन जो संसाधनों को संग्रहीत करने के लिए JSON का उपयोग करते हैं।


असुरक्षित कोड का उदाहरण



एक सरल उदाहरण देखें जो भेद्यता को प्रदर्शित करता है:



#include <nlohmann/json.hpp>#include <iostream>#include <fstream>

int main() { std::ifstream file("malicious.json"); nlohmann::json data; file >> data; // असुरक्षित ऑपरेशन std::cout << data.dump() << std::endl; return 0;}


यदि फ़ाइल malicious.json में 1024 स्तरों से अधिक नेस्टिंग गहराई वाला JSON है, तो प्रोग्राम क्रैश हो जाएगा या, सबसे बुरी स्थिति में, दुर्भावनापूर्ण कोड निष्पादित करेगा।



सुरक्षा के लिए सिफारिशें



  • लाइब्रेरी को अपडेट करें संस्करण 3.11.3 या उससे ऊपर तक — इसमें भेद्यता पहले ही ठीक कर दी गई है।
  • नेस्टिंग गहराई को मैन्युअल रूप से सीमित करें: जाँच के साथ कस्टम पार्सर का उपयोग करें।
  • पार्सर में भेजने से पहले इनपुट डेटा को मान्य करें — JSON के आकार और संरचना की जाँच करें।
  • स्टैटिक कोड विश्लेषण का उपयोग करें (जैसे, Clang Static Analyzer) संभावित ओवरफ्लो का पता लगाने के लिए।


कैसे अपडेट करें?



लाइब्रेरी को अपडेट करने के लिए टर्मिनल में निम्नलिखित चलाएँ (यदि पैकेज मैनेजर का उपयोग कर रहे हैं):



# vcpkg के लिएvcpkg install nlohmann-json --version=3.11.3

# Conan के लिएconan install nlohmann_json/3.11.3@

# CMake के लिए (GitHub से कनेक्ट करना)FetchContent_Declare( nlohmann_json GIT_REPOSITORY https://github.com/nlohmann/json.git GIT_TAG v3.11.3)


निष्कर्ष



nlohmann/json में भेद्यता केवल एक तकनीकी समस्या नहीं है, बल्कि एक अनुस्मारक है कि सबसे लोकप्रिय और अच्छी तरह से परीक्षण की गई लाइब्रेरी

अनुशंसित लाइब्रेरीज़