ספריות שחשופות באופן שגוי ל-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>

בדיקה ואימות של מזהי ה-URI החיצוניים

מאמתים את מזהי ה-URI החיצוניים (באמצעות סכימה מסוג content) ומוודאים שהם לא מפנים לקבצים המקומיים של האפליקציה. כך אפשר למנוע דליפת מידע לא מכוונת.

מתן הרשאות גישה מינימליות

ל-content URI יכולות להיות הרשאות גישה לקריאה ולכתיבה. חשוב לוודא שמוענקת רק הרשאת הגישה המינימלית הנדרשת. לדוגמה, אם נדרשת רק הרשאת קריאה, צריך להעניק באופן מפורש רק את FLAG_GRANT_READ_URI_PERMISSION.

הימנעות משימוש ב-<external-path> לאחסון או לשיתוף מידע רגיש

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

משאבים