أدلة تم عرضها بشكل غير صحيح لخدمة FileProvider
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
فئة 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
فقط بشكل صريح.
يجب عدم تخزين البيانات الحسّاسة، مثل معلومات تحديد الهوية الشخصية (PII)، خارج حاوية التطبيق أو مرافق تخزين بيانات اعتماد النظام. وبالتالي، تجنَّب استخدام العنصر<external-path>
ما لم تتأكد صراحةً من أنّ المعلومات التي يتم تخزينها أو مشاركتها ليست حسّاسة.
المراجع
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-26 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-07-26 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# Improperly Exposed Directories to FileProvider\n\n\u003cbr /\u003e\n\n**OWASP category:** [MASVS-STORAGE: Storage](https://mas.owasp.org/MASVS/05-MASVS-STORAGE)\n\nOverview\n--------\n\nAn improperly configured `FileProvider` can unintentionally expose files and directories to an attacker. Depending on the configuration, an attacker can read from or write to these exposed files, which in turn can lead to the exfiltration of sensitive information or, in the worst case, arbitrary code execution. For example, an application with `\u003croot-path\u003e` set in the configuration could enable an attacker to access sensitive information stored in databases or to overwrite the application's native libraries, leading to arbitrary code execution.\n\nImpact\n------\n\nThe impact varies depending on the configuration and file content, but generally leads to data leakage (when reading) or overwriting (when writing) files.\n\nMitigations\n-----------\n\n### Do not use the \\\u003croot-path\\\u003e path element in the configuration\n\n`\u003croot-path\u003e` corresponds to the root directory of the device (`/`). Allowing this in the configuration provides arbitrary access to files and folders, including the app's sandbox and `/sdcard` directory, which offers a very broad attack surface to an attacker.\n\n### Share narrow path ranges\n\nIn the path configuration file, avoid sharing a broad path range like `.` or `/`. Doing so can lead to exposing sensitive files by mistake. Share only a limited/narrower path range and ensure only files you want to share are under this path. This will prevent exposing sensitive files by mistake.\n\nA typical configuration file with safer settings could look like this: \n\n### Xml\n\n \u003cpaths\u003e\n \u003cfiles-path name=\"images\" path=\"images/\" /\u003e\n \u003cfiles-path name=\"docs\" path=\"docs\" /\u003e\n \u003ccache-path name=\"cache\" path=\"net-export/\" /\u003e\n \u003c/paths\u003e\n\n### Check and validate the external URIs\n\nValidate the external URIs (using a `content` scheme) and ensure they are not pointing to your application's local files. This prevents any inadvertent information leak.\n\n### Grant minimum access permissions\n\nA [`content URI`](/guide/topics/providers/content-provider-basics#ContentURIs) can have both read and write access permissions. Ensure only the minimum required access permission is granted.\nFor example, if *only* read permission is required, then explicitly grant only [`FLAG_GRANT_READ_URI_PERMISSION`](/reference/android/content/Intent#FLAG_GRANT_READ_URI_PERMISSION).\n\n### Avoid usage of \\\u003cexternal-path\\\u003e for storing/sharing sensitive information\n\nSensitive data, like personally identifiable information (PII), should not be stored outside of the application container or system credential storage facilities. Thus, avoid the usage of the`\u003cexternal-path\u003e` element, unless you have explicitly verified that the information being stored/shared is not sensitive.\n\nResources\n---------\n\n- [FileProvider Documentation](/reference/androidx/core/content/FileProvider)\n\n- [Vulnerability on using \\\u003croot-path\\\u003e](https://hackerone.com/reports/876192)"]]