
प्रूफ-ऑफ-कॉन्सेप्ट जो tar npm पैकेज में हार्डलिंक पाथ ट्रैवर्सल का प्रदर्शन करता है, जो क्राफ्टेड आर्काइव्स के माध्यम से निष्कर्षण निर्देशिका के बाहर फाइलों को ओवरराइट करने की अनुमति देता है।
शोध: Joshua van Rijswijk
इस रिपॉजिटरी में CVE-2026-29786 के लिए एक प्रूफ ऑफ कॉन्सेप्ट (PoC) शामिल है, जो tar npm पैकेज में एक कमजोरी है जो एक क्राफ्टेड आर्काइव को इच्छित निष्कर्षण निर्देशिका के बाहर इंगित करने वाला हार्डलिंक बनाने की अनुमति देती है।
यह समस्या तब उत्पन्न होती है जब एक tar आर्काइव में ड्राइव-रिलेटिव लिंक टारगेट जैसे C:../target.txt होता है। निष्कर्षण के दौरान लाइब्रेरी द्वारा सत्यापन और पथ सामान्यीकरण (path normalization) करने के क्रम के कारण, ट्रैवर्सल सुरक्षा को बायपास किया जा सकता है।
सामान्यीकरण के बाद, पथ ../target.txt बन जाता है, जिससे लिंक टारगेट कॉन्फ़िगर की गई निष्कर्षण निर्देशिका से बाहर निकल सकता है।
जब निकाली गई फ़ाइल में लिखा जाता है, तो बाहरी फ़ाइल संशोधित हो जाती है क्योंकि दोनों पथ एक ही हार्डलिंक को संदर्भित करते हैं।
यह कमजोरी निरपेक्ष पथों (Unpack[STRIPABSOLUTEPATH]) को संभालने वाले निष्कर्षण तर्क में होती है।
ट्रैवर्सल का पता लगाना निरपेक्ष पथ हटाने से किया जाता है।
दुर्भावनापूर्ण हेडर मान का उदाहरण
linkpath: C:../target.txt
प्रोसेसिंग व्यवहार:
पथ को ट्रैवर्सल का पता लगाने के लिए खंडों में विभाजित किया जाता है।
ट्रैवर्सल जांच ".." खंडों की तलाश करती है।
चूंकि खंड "C:.." के रूप में दिखाई देता है, इसलिए जांच ट्रिगर नहीं होती है।
फ़ंक्शन stripAbsolutePath() बाद में ड्राइव उपसर्ग (C:) हटा देता है।
परिणामी पथ बन जाता है:
../target.txt
यह पथ को इच्छित निष्कर्षण रूट से बाहर निकलने की अनुमति देता है।
एक हमलावर निष्कर्षण करने वाली प्रक्रिया के विशेषाधिकारों के साथ निष्कर्षण निर्देशिका के बाहर फ़ाइलों को अधिलेखित कर सकता है।
संभावित वास्तविक-विश्व परिदृश्यों में शामिल हैं:
• अविश्वसनीय tar आर्काइव निकालने वाले CLI टूल • तृतीय-पक्ष आर्टिफैक्ट प्रोसेस करने वाली बिल्ड पाइपलाइन • उपयोगकर्ता-आपूर्ति tar फ़ाइलें आयात करने वाली सेवाएँ • आर्काइव अनपैक करने वाले पैकेज मैनेजर या प्लगइन सिस्टम
npm install [email protected]
node poc.cjs
स्क्रिप्ट एक दुर्भावनापूर्ण tar आर्काइव उत्पन्न करती है और प्रदर्शित करती है कि निकाली गई फ़ाइल में लिखने से निष्कर्षण निर्देशिका के बाहर की फ़ाइल अधिलेखित हो जाती है।