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