
सुरक्षा प्रशिक्षण के लिए Node.js के असुरक्षित डिसीरियलाइज़ेशन (CVE-2017-5941) का कुकी-आधारित पेलोड इंजेक्शन और रिवर्स शेल शोषण के साथ शैक्षिक डेमो।
Node.js एक ओपन-सोर्स रनटाइम वातावरण है जिसका उपयोग JavaScript में सर्वर कार्यक्षमता को लागू करने के लिए किया जाता है।
Node.js के भीतर एक विशिष्ट सॉफ्टवेयर पैकेज में एक असुरक्षित फंक्शन है जो deserialisation से संबंधित है, जिसके कारण यदि क्लाइंट विशेष रूप से तैयार किया गया कुकी प्रदान करता है तो यह अनधिकृत कमांड चलाता है।
इस भेद्यता को दोहराया गया था और यह संभावित रूप से एक reverse shell लॉन्च कर सकता है, जो क्लाइंट के अनुरोध में एक कुकी से पढ़े गए अस्वच्छित इनपुट डेटा के कारण संभव है। क्लाइंट अपने कुकीज़ को संपादित कर सकता है, एक bash कमांड वाला असुरक्षित पेलोड इंजेक्ट कर सकता है, और इसे सर्वर पर भेज सकता है जहां यह आँख बंद करके कमांड निष्पादित करेगा। इससे अनधिकृत उपयोगकर्ता डेटाबेस या पूर्ण मशीनों तक पहुँच सकते हैं।
इस प्रकार की भेद्यता के नैतिक निहितार्थ बैकएंड सर्वर पर डेटाबेस में एक्सेस किए जा सकने वाले डेटा में निहित हैं। डेटा के आधार पर, यह उपयोगकर्ता की सुरक्षा के लिए हानिकारक हो सकता है और कंपनी की विश्वसनीयता और प्रतिष्ठा को प्रभावित कर सकता है। इस कारण से, अन्य हमलावरों से पहले भेद्यताओं को ढूंढना महत्वपूर्ण है। इन भेद्यताओं की पहचान करने के लिए कई प्रकार के विभिन्न उपकरण उपलब्ध हैं जैसे Snyk, Burp Suite और अन्य भुगतान विकल्प।
इस भेद्यता को कम करने का सबसे अच्छा तरीका उचित इनपुट स्वच्छता का अभ्यास करना और node.js के भीतर किसी भी असुरक्षित unserialise फंक्शन के उपयोग को बंद करना है। इस असुरक्षित फंक्शन के प्रतिस्थापन, JSON.parse, की सिफारिश की जाती है।