محمد شرف

اجتياز المسار: ../ ما زالت تكسر التطبيقات

إن انتهى اسم ملف من المستخدم داخل مسار ملف، فسيجرب أحدهم ../../etc/passwd. افحص المسار النهائي لا المُدخل.

· 1 دقائق قراءة

نقطة تنزيل تأخذ ?file=report.pdf وتقرؤه من مجلد. يرسل أحدهم ?file=../../config/.env بدلًا منه. إن كان الكود يضم المجلد والمُدخل فقط، فسيقرأ ملف الإعداد. والخطأ نفسه في دالة رفع أو فك ضغط يستطيع كتابة ملفات في أي مكان، وهذا كثيرًا ما يعني تشغيل كود.

ثغرات هذه السنة المستغلة في الأجهزة الأمنية وخوادم الملفات فيها كثير من اجتياز المسار. خطأ قديم، ويتكرر.

كيف تتجنبه:

  • لا تستخدم مُدخل المستخدم كمسار أصلًا إن استطعت. خزّن الملفات بمعرّفات عشوائية وابحث عن الاسم في قاعدة البيانات.
  • إن كان لا بد، فحلّل المسار الكامل (realpath أو Path.resolve) وتحقق أنه ما زال يبدأ بالمجلد المسموح.
  • ارفض المسارات المطلقة و.. والبايتات الفارغة والشرطات المائلة العكسية قبل ذلك.
  • عند فك ملفات ZIP أو TAR، افحص مسار كل عنصر بالطريقة نفسها.
شاركWhatsAppLinkedInXTelegramFacebook