קטגוריה ב-OWASP: MASVS-PLATFORM: Platform Interaction
סקירה כללית
נקודת החולשה של החטיפה של כוונה משתמעת מתרחשת כשאפליקציה לא מציינת שם או חבילת רכיבים מוגדרים במלואם כשמפעילים כוונה. כך אפליקציה זדונית יכולה לרשום מסנן אינטנט כדי ליירט את ה-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);
אם אתם צריכים להשתמש בכוונות משתמעות, אל תכללו מידע רגיש או אובייקטים שניתנים לשינוי ואתם לא רוצים לחשוף. יכול להיות שתצטרכו להשתמש בכוונות משתמעות אם לאפליקציה אין מידע מדויק לגבי האפליקציה שתטפל בפעולה (למשל, כתיבת אימייל, צילום תמונה וכו').
משאבים
- רכיב מסנן אינטרנט ב-Manifest
- הוספה לרשימת ההיתרים של הרשאות הרשאה
- כוונות ומסנני כוונות
- איך מאלצים את המערכת להציג בורר לכוונות משתמשים מרומזות
- אובייקטי Intent מרומזים נפוצים