رده OWASP: MASVS-STORAGE: ذخیرهسازی
نمای کلی
یک FileProvider که به درستی پیکربندی نشده باشد، میتواند ناخواسته فایلها و دایرکتوریها را در اختیار مهاجم قرار دهد. بسته به پیکربندی، مهاجم میتواند از این فایلهای افشا شده بخواند یا در آنها بنویسد، که به نوبه خود میتواند منجر به استخراج اطلاعات حساس یا در بدترین حالت، اجرای کد دلخواه شود. به عنوان مثال، یک برنامه با <root-path> تنظیم شده در پیکربندی میتواند به مهاجم امکان دسترسی به اطلاعات حساس ذخیره شده در پایگاههای داده یا بازنویسی کتابخانههای بومی برنامه را بدهد که منجر به اجرای کد دلخواه میشود.
تأثیر
تأثیر این آسیبپذیری بسته به پیکربندی و محتوای فایل متفاوت است، اما بهطورکلی منجر به نشت دادهها (هنگام خواندن) یا رونویسی (هنگام نوشتن) فایلها میشود.
کاهشها
از عنصر مسیر <root-path> در پیکربندی استفاده نکنید
<root-path> مربوط به دایرکتوری ریشه دستگاه ( / ) است. فعال کردن این گزینه در پیکربندی، دسترسی دلخواه به فایلها و پوشهها، از جمله سندباکس برنامه و دایرکتوری /sdcard را فراهم میکند که سطح حمله بسیار گستردهای را برای مهاجم فراهم میکند.
محدودههای باریک را به اشتراک بگذارید
در فایل پیکربندی مسیر، از به اشتراک گذاشتن محدودهی وسیعی از مسیرها مانند . یا / خودداری کنید. انجام این کار میتواند منجر به افشای اشتباه فایلهای حساس شود. فقط یک محدودهی مسیر محدود/باریکتر را به اشتراک بگذارید و مطمئن شوید که فقط فایلهایی که میخواهید به اشتراک بگذارید در این مسیر قرار دارند. این کار از افشای اشتباه فایلهای حساس جلوگیری میکند.
یک فایل پیکربندی معمولی با تنظیمات امنتر میتواند چیزی شبیه به این باشد:
ایکس ام ال
<paths>
<files-path name="images" path="images/" />
<files-path name="docs" path="docs" />
<cache-path name="cache" path="net-export/" />
</paths>
بررسی و اعتبارسنجی URI های خارجی
URI های خارجی را (با استفاده از یک طرح content ) اعتبارسنجی کنید و مطمئن شوید که به فایلهای محلی برنامه شما اشاره نمیکنند. این کار از هرگونه نشت اطلاعات ناخواسته جلوگیری میکند.
اعطای حداقل مجوزهای دسترسی
یک content URI میتواند هم مجوزهای دسترسی خواندن و هم نوشتن داشته باشد. مطمئن شوید که فقط حداقل مجوز دسترسی مورد نیاز اعطا میشود. برای مثال، اگر فقط مجوز خواندن مورد نیاز است، صریحاً فقط FLAG_GRANT_READ_URI_PERMISSION اعطا کنید.
از استفاده از <external-path> برای ذخیره/به اشتراک گذاری اطلاعات حساس خودداری کنید.
دادههای حساس، مانند اطلاعات شخصی قابل شناسایی (PII)، نباید خارج از محفظه برنامه یا مراکز ذخیرهسازی اطلاعات سیستم ذخیره شوند. بنابراین، از استفاده از عنصر <external-path> خودداری کنید، مگر اینکه صریحاً تأیید کرده باشید که اطلاعات ذخیره شده/به اشتراک گذاشته شده حساس نیستند.