
सुरक्षा पैच CVE-2023-26136 के लिए tough-cookie 2.5.0 में - प्रोटोटाइप प्रदूषण भेद्यता सुधार बैकवर्ड संगतता के साथ
यह परियोजना CVE-2023-26136 को संबोधित करती है, जो tough-cookie के संस्करण 4.1.3 से पहले वाले संस्करणों में एक गंभीर प्रोटोटाइप प्रदूषण भेद्यता है। यह भेद्यता Penguin Software Inc. के वेब एप्लिकेशन को प्रभावित करती है, जो कुकी प्रसंस्करण के लिए [email protected] का उपयोग करता है।
CVE-2023-26136 एक प्रोटोटाइप प्रदूषण भेद्यता है जो तब होती है जब CookieJar का उपयोग rejectPublicSuffixes=false के साथ किया जाता है। समस्या MemoryCookieStore वर्ग में अनुचित ऑब्जेक्ट आरंभीकरण से उत्पन्न होती है, जिससे हमलावर दुर्भावनापूर्ण रूप से तैयार किए गए कुकी डोमेन के माध्यम से Object.prototype में गुणों को इंजेक्ट कर सकते हैं।
भेद्यता lib/memstore.js में मौजूद है जहाँ कुकीज़ को सादे जावास्क्रिप्ट ऑब्जेक्ट ({}) का उपयोग करके संग्रहीत किया जाता है। चूँकि ये ऑब्जेक्ट Object.prototype से विरासत प्राप्त करते हैं, हमलावर __proto__, constructor, या prototype जैसे डोमेन वाली कुकीज़ सेट करके इसका शोषण कर सकते हैं, जिससे प्रोटोटाइप प्रदूषण होता है।
फिक्स MemoryCookieStore वर्ग में सभी {} के उदाहरणों को Object.create(null) से बदल देता है:
// पहले (असुरक्षित)
this.idx = {};
// बाद में (ठीक किया गया)
this.idx = Object.create(null);
यह परिवर्तन बिना प्रोटोटाइप श्रृंखला वाले ऑब्जेक्ट बनाकर प्रोटोटाइप प्रदूषण को रोकता है, जिससे कुकी भंडारण को अनावश्यक विरासत से प्रभावी रूप से अलग किया जाता है।
lib/memstore.js: Object.create(null) का उपयोग करने के लिए ऑब्जेक्ट आरंभीकरण अपडेट किया गया├── README.md # यह फ़ाइल
├── changes.diff # Git-संगत diff फ़ाइल
├── test-cve-2023-26136.js # फिक्स के लिए यूनिट टेस्ट
├── tough-cookie/
│ ├── index.js # शोषण प्रदर्शन
│ ├── Original v2.5.0/ # मूल असुरक्षित संस्करण
│ ├── v2.5.0-PATCHED/ # पैच किया गया संस्करण
│ │ └── tough-cookie-2.5.0.tgz # पैक किया गया संस्करण
│ └── package.json
└── mission.txt # मूल मिशन आवश्यकताएँ
पैच किया गया संस्करण tough-cookie/v2.5.0-PATCHED/tough-cookie-2.5.0.tgz के रूप में उपलब्ध है।
स्थापित करने के लिए:
npm install ./tough-cookie/v2.5.0-PATCHED/tough-cookie-2.5.0.tgz
मूल tough-cookie परीक्षण सूट को पास होना चाहिए। परीक्षण चलाने के लिए:
cd tough-cookie/v2.5.0-PATCHED
npm install
npm test
नोट: मूल tough-cookie 2.5.0 में इस वितरण में कोई test निर्देशिका शामिल नहीं है, लेकिन पैच किया गया संस्करण मूल API के साथ पूर्ण संगतता बनाए रखता है।
फिक्स को सत्यापित करने के लिए कस्टम यूनिट टेस्ट चलाएँ:
node test-cve-2023-26136.js
अपेक्षित आउटपुट:
Testing CVE-2023-26136 fix...
✅ CVE-2023-26136 fix verified: No prototype pollution detected
✅ Test passed: The vulnerability has been successfully patched
परियोजना में tough-cookie/index.js में एक शोषण प्रदर्शन शामिल है:
cd tough-cookie
node index.js
यह मूल असुरक्षित संस्करण और पैच किए गए संस्करण दोनों का परीक्षण करेगा, जो दिखाएगा:
EXPLOITED SUCCESSFULLYEXPLOIT FAILEDchanges.diff फ़ाइल में एक git-संगत diff है जिसे इस प्रकार लागू किया जा सकता है:
git apply changes.diff
इस diff में भेद्यता को ठीक करने के लिए केवल आवश्यक परिवर्तन शामिल हैं, बिना किसी अनावश्यक संशोधन के।
शोषण इस प्रकार काम करता है:
rejectPublicSuffixes: false के साथ एक CookieJar बनाना__proto__ के साथ एक दुर्भावनापूर्ण कुकी सेट करनाObject.prototype श्रृंखला को प्रदूषित करता हैसंभावित क्षति:
✅ Node.js 20 (LTS) पर परीक्षित और सत्यापित
GitHub रिपॉजिटरी: Forked tough-cookie repository
Git टैग: v2.5.0-patched-cve-2023-26136-fix
GitHub Actions - विशेषज्ञ स्तर
Jenkins - उन्नत स्तर
Travis CI - मध्यवर्ती स्तर
CircleCI - मध्यवर्ती स्तर
GitLab CI/CD - उन्नत स्तर
यह परियोजना मूल tough-cookie लाइसेंस (BSD-3-Clause) को बनाए रखती है, साथ ही सुरक्षा फिक्स को जोड़ती है।
नोट: यह एक सुरक्षा-केंद्रित पैच है जो CVE-2023-26136 भेद्यता को समाप्त करते हुए पूर्ण पिछड़ी संगतता बनाए रखता है।