createPackageContext (יצירת חבילה)

קטגוריה ב-OWASP: MASVS-CODE: איכות הקוד

סקירה כללית

public abstract Context createPackageContext (String packageName, int flags)

משתמשים בשיטה createPackageContext כשמפתח רוצה ליצור הקשר לאפליקציה אחרת באפליקציה שלו.

לדוגמה, אם מפתחים רוצים לקבל משאבים מאפליקציה של צד שלישי או להפעיל ממנה שיטות, הם משתמשים ב-createPackageContext.

עם זאת, אם אפליקציה קוראת ל-createPackageContext עם הדגלים CONTEXT_IGNORE_SECURITY ו-CONTEXT_INCLUDE_CODE, ואז קוראת ל-getClassLoader(), יכול להיות שהאפליקציה תהיה חשופה להרצת קוד על ידי אפליקציה זדונית. למשל, כשתוקף מתחזה לשם חבילה שלא דווח עליו (השתלטות על שם חבילה), שהמפתח ציפה שיהיה במכשיר של המשתמש.

כדי לסכם את הקריטריונים שצריך לעמוד בהם כדי שהאפליקציה תהיה חשופה לסוג הזה של התקפה:

אפליקציה פגיעה:

אפליקציה זדונית:

  • יכולה לטעון לבעלות על שם החבילה שהאפליקציה הפגיעה מעבירה אל createPackageContext.
  • ייצוא של android:appComponentFactory.

השפעה

כשאפליקציה משתמשת ב-createPackageContext באופן לא מאובטח, זה עלול לגרום לאפליקציה זדונית לקבל הרשאה להריץ קוד שרירותי בהקשר של האפליקציה הפגיעה.

פעולות מיטיגציה

אין להתקשר למספר createPackageContext עם CONTEXT_IGNORE_SECURITY ו-CONTEXT_INCLUDE_CODE אלא אם הדבר הכרחי.

במקרים שבהם אי אפשר להימנע מכך, חשוב להטמיע מנגנון לאימות הזהות של החבילה שבה מפעילים את createPackageContext (למשל, על ידי אימות החתימה של החבילה).

משאבים