
पैच किया गया tough-cookie v2.5.0 जो MemoryCookieStore में Object.create(null) के साथ CVE-2023-26136 प्रोटोटाइप प्रदूषण भेद्यता को ठीक करता है, जिसमें शोषण प्रदर्शन और इकाई परीक्षण शामिल हैं।
यह रिपॉजिटरी tough-cookie पैकेज का एक पैच किया गया संस्करण, संस्करण 2.5.0, रखता है, जो महत्वपूर्ण प्रोटोटाइप प्रदूषण भेद्यता (CVE-2023-26136) को संबोधित करने के लिए है। यह भेद्यता हमलावरों को जावास्क्रिप्ट ऑब्जेक्ट्स में गुण इंजेक्ट करके प्रोटोटाइप श्रृंखला में हेरफेर करने की अनुमति देती है। इससे इस पैकेज पर निर्भर अनुप्रयोगों में अप्रत्याशित व्यवहार, रिमोट कोड निष्पादन जैसे सुरक्षा जोखिम और संगतता समस्याएं हो सकती हैं।
tough-cookie पैकेज के v4.1.3 से पहले के संस्करण rejectPublicSuffixes=false मोड के साथ CookieJar का उपयोग करने पर प्रोटोटाइप प्रदूषण के लिए संवेदनशील हैं। यह भेद्यता कुकीज के अनुचित प्रबंधन से उत्पन्न होती है, विशेष रूप से जब cookie.domain को __proto__ पर सेट किया जाता है। यह हमलावरों को मुख्य ऑब्जेक्ट को संशोधित करने की अनुमति देता है, जिससे पूरे एप्लिकेशन में व्यापक समस्याएं हो सकती हैं।
Object.prototypeCVE-2023-26136 पर अधिक विवरण के लिए, देखें:
प्रोटोटाइप प्रदूषण कई महत्वपूर्ण जोखिम पैदा कर सकता है, जिनमें शामिल हैं:
सुरक्षा भेद्यताएं: आधार Object.prototype को संशोधित करके, हमलावर वस्तुओं के व्यवहार में हेरफेर कर सकते हैं, संभावित रूप से विशेषाधिकारों को बढ़ा सकते हैं, संवेदनशील डेटा तक पहुंच सकते हैं, या एप्लिकेशन में सुरक्षा तंत्र को बायपास कर सकते हैं।
सेवा अस्वीकार (DoS): प्रोटोटाइप श्रृंखला को प्रदूषित करने से सिस्टम में अप्रत्याशित व्यवहार हो सकता है, जिससे क्रैश, अनंत लूप्स या संसाधन की कमी हो सकती है, जिससे एप्लिकेशन वैध उपयोगकर्ताओं के लिए अनुपलब्ध हो सकता है।
संगतता समस्याएं: Object.prototype को बदलने से अन्य लाइब्रेरीज़ या फ्रेमवर्क के साथ इंटरैक्ट करते समय त्रुटियां और अप्रत्याशित व्यवहार हो सकते हैं। प्रोटोटाइप श्रृंखलाओं पर निर्भर निर्भरताएं टूट सकती हैं, जिससे अपडेट के दौरान एकीकरण समस्याएं या दोषपूर्ण एप्लिकेशन व्यवहार हो सकता है।
अप्रत्याशित अनुप्रयोग व्यवहार: प्रोटोटाइप प्रदूषण अनियमित प्रोग्राम व्यवहार का कारण बन सकता है, जिसमें डेटा भ्रष्टाचार, सुरक्षा उल्लंघन और संभावित रूप से एप्लिकेशन को आगे के शोषण के लिए उजागर करना शामिल है।
पैच में MemoryCookieStore वर्ग को संशोधित करना शामिल है, विशेष रूप से putCookie विधि, ताकि प्रोटोटाइप-मुक्त ऑब्जेक्ट बनाकर प्रोटोटाइप प्रदूषण को रोका जा सके। मुख्य परिवर्तनों में शामिल हैं:
Object.create(null) का उपयोग करना {} के बजाय बिना प्रोटोटाइप के ऑब्जेक्ट बनाने के लिए।cookie.domain = __proto__ के साथ कुकीज सेट की जा सकती थीं।tough-cookie के पैच किए गए संस्करण को स्थापित करने के लिए, निम्न कमांड का उपयोग करें:
npm install ./tough-cookie-2.5.0-PATCHED.tgz
इस रिपॉजिटरी में एक यूनिट परीक्षण शामिल है जो यह सत्यापित करने के लिए डिज़ाइन किया गया है कि प्रोटोटाइप प्रदूषण भेद्यता का सफलतापूर्वक समाधान किया गया है।
prototype_pollution_test नाम का परीक्षण विशेष रूप से जांचता है कि __proto__ के डोमेन के साथ कुकीज सेट करना अब जावास्क्रिप्ट प्रोटोटाइप श्रृंखला को प्रभावित नहीं करता है। यह सुनिश्चित करता है कि प्रोटोटाइप प्रदूषण को रोका गया है, एप्लिकेशन की अखंडता बनाए रखता है।
परीक्षण चलाने और फिक्स की पुष्टि करने के लिए, निम्न कमांड निष्पादित करें:
npm test
मूल और पैच किए गए दोनों संस्करणों में शोषण प्रदर्शित करने के लिए, नीचे दिए गए चरणों का पालन करें:
tough-cookie का संवेदनशील संस्करण स्थापित करें:
npm install [email protected] && node index.js
अपेक्षित आउटपुट:
Polluted object: {
Slonser: Cookie="Slonser=polluted; Domain=__proto__; Path=/notauth; hostOnly=false; aAge=5ms; cAge=5ms",
Auth: Cookie="Auth=Lol; Domain=google.com; Path=/notauth; hostOnly=false; aAge=5ms; cAge=5ms"
} EXPLOITED SUCCESSFULLY
यह इंगित करता है कि किसी ऑब्जेक्ट के प्रोटोटाइप को प्रदूषित कर दिया गया है, जो मूल संस्करण में भेद्यता की उपस्थिति की पुष्टि करता है।
npm install ./tough-cookie-2.5.0-PATCHED.tgz && node index.js
अपेक्षित आउटपुट:
EXPLOIT FAILED
यह दर्शाता है कि शोषण को सफलतापूर्वक अवरुद्ध कर दिया गया है, यह पुष्टि करता है कि प्रोटोटाइप प्रदूषण भेद्यता को ठीक कर दिया गया है।
tough-cookie v2.5.0 में प्रोटोटाइप प्रदूषण भेद्यता को संबोधित करने की प्रक्रिया में यह सुनिश्चित करने के लिए कई व्यवस्थित कदम शामिल थे कि फिक्स पूर्ण और प्रभावी हो। नीचे मेरे द्वारा अपनाए गए दृष्टिकोण का एक अवलोकन दिया गया है:
मैंने प्रोटोटाइप प्रदूषण (CVE-2023-26136) पर शोध करके शुरुआत की ताकि इसके प्रभाव को समझ सकूं। यह भेद्यता हमलावरों को cookie.domain प्रॉपर्टी के माध्यम से प्रोटोटाइप श्रृंखला में गुण इंजेक्ट करने की अनुमति देती है, जिससे रिमोट कोड निष्पादन जैसे सुरक्षा जोखिम हो सकते हैं।
मैंने भेद्यता के आसपास के GitHub मुद्दों और चर्चाओं का पता लगाया, जिसमें tough-cookie v4.1.3 में फिक्स भी शामिल है, जो प्रोटोटाइप प्रदूषण को रोकने के लिए Object.create(null) का उपयोग करता है। इसने मुझे v2.5.0 को ठीक करने के लिए आवश्यक परिवर्तनों की पहचान करने में मदद की।
मैंने अंतरों को समझने और आवश्यक परिवर्तनों की पहचान करने के लिए v2.5.0 की तुलना v4.1.3 से की। मुख्य संशोधन में शोषण को रोकने के लिए प्रोटोटाइप-मुक्त ऑब्जेक्ट का उपयोग करना शामिल था।
मैंने MemoryCookieStore वर्ग को अपडेट किया ताकि {} के बजाय Object.create(null) का उपयोग किया जा सके, जिससे कोई प्रोटोटाइप प्रदूषण न हो।
मैंने फिक्स को सत्यापित करने के लिए यूनिट परीक्षण लिखे और एक शोषण प्रदर्शन स्क्रिप्ट (index.js) बनाई ताकि यह दिखाया जा सके कि पैच किए गए संस्करण में भेद्यता को कैसे रोका गया है।
अंत में, मैंने फिक्स का दस्तावेज़ीकरण किया, जिसमें स्थापना और परीक्षण निर्देश शामिल हैं, और आसान वितरण के लिए पैच किए गए संस्करण (tough-cookie-2.5.0-PATCHED.tgz) को पैकेज किया।
v2.5.0 से जोड़े/संपादित किए गए फ़ाइलें
index.js: भेद्यता और फिक्स प्रदर्शित करने के लिए मुख्य स्क्रिप्ट।lib/memstore.js: प्रोटोटाइप प्रदूषण को रोकने के लिए संशोधित MemoryCookieStore वर्ग।test/ietf_data/parser.json: परीक्षण डेटा में पुरानी तिथियों को अपडेट करने के लिए संशोधित।test/prototype_pollution_test.js: यह सत्यापित करने के लिए यूनिट परीक्षण कि प्रोटोटाइप प्रदूषण ठीक हो गया है।tough-cookie-2.5.0-PATCHED.tgz: tough-cookie पैकेज का पैच किया गया संस्करण।