CVE-2025-65346 – ثغرة اجتياز المسار المُوثّقة من دالة UnZip تؤدي إلى كتابة ملفات تعسفية في laravel-file-manager الإصدار 3.3.1
🧭 نظرة عامة
ثغرة اجتياز المسار في وظيفة فك الضغط/استخراج الملفات داخل التطبيق المصاب تسمح للمهاجم بكتابة ملفات في مواقع نظام ملفات تعسفية أثناء استخراج الأرشيف. نظرًا لأن روتين الاستخراج يفشل في تنظيف مسارات الوجهة داخل إدخالات ZIP، يمكن للمهاجم صياغة أرشيفات ZIP تحتوي على تسلسلات اجتياز (مثل ../../routes) أو مسارات مطلقة. عند معالجتها بواسطة التطبيق، يتم استخراج هذه الملفات مباشرة إلى المواقع المحددة بصلاحيات العملية الجارية.
يمكن استغلال هذا العيب لاستبدال الملفات الموجودة، أو زرع حمولات قابلة للتنفيذ، أو تعديل سلوك التطبيق، مما قد يؤدي إلى تنفيذ تعليمات برمجية عن بُعد.
🧱 المكون المتأثر
- المشروع:
laravel-file-manager
- المكون: وظيفة الضغط/الأرشفة
- الإصدار المتأثر: v3.3.1 وما دونه
🎯 نواقل الهجوم
- يقوم المهاجم برفع أو توفير أرشيف ZIP لنقطة نهاية فك الضغط في التطبيق (قد تكون المصادقة مطلوبة أو لا حسب الإعدادات).
- التلاعب بحمولة طلب UNZIP لتضمين تسلسلات اجتياز الدليل مثل ../../routes.
- يقوم منطق الاستخراج في الخلفية بحل هذه المسارات دون تحقق ويكتب الملفات مباشرة في تلك المواقع.
- قد يتم استبدال الملفات الموجودة بصمت في حال تعارض أسماء الملفات.
- يكتسب المهاجم القدرة على استبدال ملفات التطبيق، أو كتابة أغلفة ويب، أو تعديل ملفات الإعدادات الحرجة.
💥 التأثير
- كتابة ملفات تعسفية: يمكن كتابة الملفات في أي مكان يمكن لمستخدم التطبيق الكتابة إليه (مثل www-data).
- استبدال الملفات: يمكن للمهاجمين استبدال ملفات التطبيق الشرعية بما في ذلك المسارات أو المتحكمات أو الإعدادات.
- تنفيذ تعليمات برمجية عن بُعد: من خلال كتابة حمولات PHP أو JSP أو غيرها من الحمولات القابلة للتنفيذ عبر الويب في جذر الويب، يمكن للمهاجم تحقيق تنفيذ كامل للتعليمات البرمجية.
- اختراق التطبيق: يمكن لتعديل نقاط الدخول، مثل index.php، تغيير منطق الموقع أو إدخال أبواب خلفية دائمة.
- تصعيد الصلاحيات (بشكل غير مباشر): قد يؤدي استبدال ملفات الإعدادات/البيئة إلى كشف أسرار تمكن من الحركة الجانبية.
الخطورة: حرجة
الدرجة الأساسية: 9.1
ناقل التقييم: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
🛡️ التوصيات العلاجية
- تطبيق التحقق من المسار الأساسي: قم بتطبيع مسارات الملفات المطلوبة وفرض تقييد صارم على جذر التخزين المخصص للمشروع.
- رفض أي مسار يحتوي على تسلسلات اجتياز (../, %2e%2e/, اجتياز متداخل).
- تطبيق منطق القائمة البيضاء على الخادم.
- تحديث الإصدار المعدل بمجرد إصدار البائع تصحيحًا يعالج هذه الثغرة.
🙏 الشكر
اكتشف وأبلغ عن الثغرة: Theethat Thamwasin