فئة OWASP: MASVS-STORAGE: مساحة التخزين
نظرة عامة
يمكن أن يؤدي ضبط FileProvider
بشكل غير صحيح إلى تعريض الملفات والأدلة عن غير قصد لمهاجم. استنادًا إلى الإعدادات، يمكن للمهاجم قراءة البيانات من هذه الملفات المكشوفة أو الكتابة فيها، ما قد يؤدي بدوره إلى استخراج معلومات حساسة أو، في أسوأ الحالات، تنفيذ رموز عشوائية. على سبيل المثال، يمكن أن يؤدي تطبيق تم ضبطه على <root-path>
في الإعدادات إلى تمكين المهاجم من الوصول إلى المعلومات الحساسة المخزّنة في قواعد البيانات أو استبدال المكتبات الأصلية للتطبيق، ما يؤدي إلى تنفيذ رمز عشوائي.
التأثير
ويختلف التأثير حسب الإعدادات ومحتوى الملف، ولكن يؤدي بشكل عام إلى تسرُّب البيانات (عند القراءة) أو استبدال الملفات (عند الكتابة).
إجراءات التخفيف
لا تستخدِم عنصر المسار <root-path> في الإعدادات.
يتوافق <root-path>
مع الدليل الجذر للجهاز (/
). ويؤدي السماح بذلك في الإعدادات إلى توفير إمكانية وصول عشوائية إلى الملفات والمجلدات، بما في ذلك مساحة وضع الحماية للتطبيق ودليل /sdcard
، ما يوفر مساحة هجوم واسعة جدًا للمهاجم.
مشاركة نطاقات المسارات الضيقة
في ملف ضبط المسار، تجنَّب مشاركة نطاق مسار واسع مثل .
أو /
. ويمكن أن يؤدي ذلك إلى عرض ملفات حساسة عن طريق الخطأ. شارِك نطاق مسار محدودًا/أضيق فقط وتأكَّد من أنّ الملفات التي تريد مشاركتها فقط هي ضمن هذا المسار. سيؤدي ذلك إلى منع عرض الملفات الحساسة عن طريق الخطأ.
يمكن أن يظهر ملف الإعدادات النموذجي الذي يتضمّن إعدادات أكثر أمانًا على النحو التالي:
Xml
<paths>
<files-path name="images" path="images/" />
<files-path name="docs" path="docs" />
<cache-path name="cache" path="net-export/" />
</paths>
التحقّق من عناوين URL الخارجية والتحقق من صحتها
تحقَّق من صحة معرّفات الموارد المنتظمة (URI) الخارجية (باستخدام مخطّط content
) وتأكَّد من أنّها لا تشير إلى الملفات المحلية لتطبيقك. ويمنع ذلك أي تسرُّب للمعلومات غير المقصود.
منح الحد الأدنى من أذونات الوصول
يمكن أن يكون لدى content URI
إذنَيّ الوصول للقراءة والكتابة. تأكَّد من منح الحد الأدنى فقط من أذونات الوصول المطلوبة.
على سبيل المثال، إذا كان إذن القراءة فقط مطلوبًا، يجب منح FLAG_GRANT_READ_URI_PERMISSION
فقط بشكل صريح.
تجنَّب استخدام <external-path> لتخزين/مشاركة المعلومات الحسّاسة.
يجب عدم تخزين البيانات الحسّاسة، مثل معلومات تحديد الهوية الشخصية (PII)، خارج حاوية التطبيق أو مرافق تخزين بيانات اعتماد النظام. وبالتالي، تجنَّب استخدام العنصر<external-path>
ما لم تتأكد صراحةً من أنّ المعلومات التي يتم تخزينها أو مشاركتها ليست حسّاسة.