קטגוריית OWASP: MASVS-CODE: איכות הקוד
סקירה כללית
הפצה של גרסאות ייצור שכוללות תכונות של בדיקה או ניפוי באגים עלולה להשפיע באופן שלילי על מצב האבטחה של האפליקציה. הפונקציות האלה עוזרות למפתחים לגלות ולזהות באגים בתרחישי שימוש מיועדים באפליקציה לפני או אחרי פרסום גרסה חדשה, והן לא אמורות להיות נגישות לציבור.
דוגמאות לתכונות של בדיקה או ניפוי באגים:
- תפריטים מוסתרים
- אפשרויות להפעלת יומני ניפוי באגים
- אפשרויות לשינוי תהליך הבקשה
- אפשרויות לעקוף תהליכי תשלום או מינוי
- אפשרויות לעקיפת האימות
- בדיקות לפעילויות ספציפיות באפליקציה
משתמש זדוני יכול לנצל את כל האפשרויות האלה כדי לשנות את התהליך המיועד של האפליקציה או לאחזר מידע על המערכת כדי להתאים מתקפות נוספות.
הסיכון שנובע מהשארת תכונות בדיקה או ניפוי באגים חשופות עשוי להשתנות בהתאם לפעולה שמשויכת ליכולות ניפוי הבאגים עצמן.
תחום סיכון נוסף באפליקציה הוא המאפיין android:debuggable
שמוגדר באלמנט <application>
של AndroidManifest.xml. כפי שצוין במאמר בנושא android:debuggable, פריסת אפליקציה לייצור עם הערך שצוין מאפשרת למשתמשים זדוניים לגשת למשאבי ניהול שאחרת לא ניתן לגשת אליהם.
השפעה
משתמש זדוני שמקיים אינטראקציה עם תכונת בדיקה או ניפוי באגים בגרסת ייצור עלול לגרום לתוצאות לא צפויות. ההשפעה של כל פעולה קשורה באופן ישיר להרשאות שהוקצו לתכונה. ככל שההרשאות גבוהות יותר, כך ההשפעה של ניצול לרעה פעיל יכולה להיות גדולה יותר. אפשר להשתמש בפונקציות כאלה באפליקציה כדי לעקוף מספר אמצעי הגנה, לעקוף חומות תשלום, לאחזר מידע שקשור למערכת או למשתמש או להפעיל פעילויות בדיקה.
אמצעי צמצום סיכונים
הימנעות משימוש ברכיבי ניפוי באגים
אסור להטמיע פונקציות של בדיקה או ניפוי באגים ברכיבי אפליקציה של ייצור, כמו פעילויות, מקלטי שידורים, שירותים או ספקי תוכן, כי אם הם מיוצאים, כל תהליך אחר במכשיר יכול להריץ אותם. הגדרת רכיב הניפוי באגים כלא מיוצא (android:exported="false") לא מהווה הגנה תקפה על היכולות, כי כל מכשיר עם הרשאות רוט עדיין יכול להפעיל אותו באמצעות הכלי Android Debug Bridge (ADB) אם אפשרות הניפוי באגים מופעלת.
הגבלת תכונות לניפוי באגים או לבדיקה לגרסאות ביניים
ההרצה של כל פונקציית בדיקה או ניפוי באגים באפליקציות צריכה להיות מוגבלת רק לקבוצה מצומצמת של גרסאות Staging, כדי לאפשר רק למפתחים לנפות באגים או לבדוק את התכונות של האפליקציה בסביבה מבוקרת. אפשר להשיג את זה על ידי יצירת בדיקה ייעודית או גרסת build לניפוי באגים של האפליקציה, ובדיקות מתקדמות עם מכשור בשביל לוודא שכל תכונת בדיקה או ניפוי באגים מופעלת בגרסה מבודדת.
הטמעה של בדיקות אוטומטיות של ממשק המשתמש
כשמריצים בדיקות באפליקציה, מומלץ להשתמש בבדיקות אוטומטיות של ממשק המשתמש, כי הן ניתנות לחזרה, אפשר להריץ אותן בסביבה נפרדת והן לא חשופות לטעויות אנוש.
משאבים
- הנחיות למפתחים בנושא הגדרות מתקדמות של בדיקות
- הדרכה למפתחים בנושא אוטומציה של בדיקות ממשק משתמש
- android:debuggable
- android:exported
- אפליקציות שאפשר לבצע בהן ניפוי באגים ב-Android Market
- האם ניפוי באגים בקוד עלול לגרום לנקודות חולשה באבטחה?