קטגוריית OWASP: MASVS-PLATFORM: Platform Interaction
סקירה כללית
android:exported
המאפיין קובע אם רכיב (פעילות, שירות, מקלט שידור וכו') יכול להיות מופעל על ידי רכיבים של אפליקציות אחרות:
- אם
true
, כל אפליקציה יכולה לגשת לפעילות ולהפעיל אותה לפי שם המחלקה המדויק שלה. - אם
false
, רק רכיבים של אותה אפליקציה, אפליקציות עם אותו מזהה משתמש או רכיבי מערכת עם הרשאות יכולים להפעיל את הפעילות.
הלוגיקה שמאחורי ערך ברירת המחדל של המאפיין הזה השתנתה לאורך זמן, והייתה שונה בהתאם לסוגי הרכיבים ולגרסאות Android. לדוגמה, ברמת API 16 (Android 4.1.1) ומטה, הערך של רכיבי <provider>
מוגדר כ-true
כברירת מחדל. אם לא מגדירים את המאפיין הזה באופן מפורש, יש סיכון שערכי ברירת המחדל יהיו שונים במכשירים מסוימים.
השפעה
המצב שבו יש ערכי ברירת מחדל שונים עלול לגרום לחשיפה לא מכוונת של רכיבים פנימיים באפליקציה. דוגמאות להשלכות אפשריות:
התקפות מניעת שירות (DoS). אפליקציות אחרות ניגשות באופן לא הולם לרכיבים פנימיים כדי לשנות את הפונקציונליות הפנימית של האפליקציה שלכם. הדלפה של מידע אישי רגיש. ביצוע קוד בהקשר של האפליקציה הפגיעה.
אמצעי צמצום סיכונים
תמיד צריך להגדיר במפורש את המאפיין android:exported
. כך לא יהיה מקום לפרשנות, ותוכלו לציין בבירור את הכוונה שלכם לגבי הנראות של רכיב מסוים.
מומלץ עבורך
- הערה: טקסט הקישור מוצג כש-JavaScript מושבת
- # ניהול מפתחות {:#key-management}
- הפעלת קוד DEX מוטמע ישירות מ-APK
- השתלטות על הקשה