פריצה מרומזת של כוונה

קטגוריית OWASP: MASVS-PLATFORM: אינטראקציה בפלטפורמה

סקירה כללית

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

בהתאם לתוכן של ה-Intent, תוקפים יכולים לקרוא או לשנות מידע רגיש או לקיים אינטראקציה עם אובייקטים שניתן לשינוי, כמו PendingIntents או Binders שניתנים לשינוי.

פריצה לכוונה משתמעת יכולה גם לאפשר לתוקף לבצע פעולות שרירותיות, כמו הפעלת רכיבים שנמצאים בשליטתו.

השפעה

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

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

אלא אם כן האפליקציה דורשת זאת, יש להביע כוונות באופן מפורש על ידי קריאה ל-setPackage(). כך ניתן לפרש את הכוונה רק על ידי רכיב ספציפי (באפליקציה או מאפליקציות אחרות), וכך למנוע מאפליקציות לא מהימנות ליירט את הנתונים שנשלחים עם הכוונה. קטע הקוד הבא מראה איך להפוך את הכוונה לברורה:

Kotlin

val intent = Intent("android.intent.action.CREATE_DOCUMENT").apply {
    addCategory("android.intent.category.OPENABLE")
    setPackage("com.some.packagename")
    setType("*/*")
    putExtra("android.intent.extra.LOCAL_ONLY", true)
    putExtra("android.intent.extra.TITLE", "Some Title")
}
startActivity(intent)

Java

Intent intent = new Intent("android.intent.action.CREATE_DOCUMENT");
intent.addCategory("android.intent.category.OPENABLE");
intent.setPackage("com.some.packagename");
intent.setType("*/*");
intent.putExtra("android.intent.extra.LOCAL_ONLY", true);
intent.putExtra("android.intent.extra.TITLE", "Some Title");
startActivity(intent);

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

משאבים