קטגוריית 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>
בדיקה ואימות של כתובות ה-URI החיצוניות
מאמתים את ה-URI החיצוניים (באמצעות סכימת content) ומוודאים שהם לא מצביעים על קבצים מקומיים באפליקציה. כך נמנעת דליפת מידע לא מכוונת.
מתן הרשאות גישה מינימליות
לcontent URI יכולות להיות הרשאות גישה לקריאה ולכתיבה. חשוב לוודא שניתנת רק הרשאת הגישה המינימלית הנדרשת.
לדוגמה, אם נדרשת רק הרשאת קריאה, צריך להעניק במפורש רק את ההרשאה FLAG_GRANT_READ_URI_PERMISSION.
מומלץ להימנע משימוש ב-<external-path> לאחסון או לשיתוף של מידע רגיש
אסור לאחסן מידע אישי רגיש, כמו פרטים אישיים מזהים (PII), מחוץ למאגר האפליקציה או למתקני אחסון פרטי הכניסה למערכת. לכן, מומלץ להימנע משימוש ברכיב<external-path>, אלא אם בדקתם באופן מפורש שהמידע שמאוחסן או משותף לא רגיש.