כיצד לתקן נקודות תורפה ב-Fragment Injection

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

מה קורה?

החל מ-1 במרץ 2017, Google Play החל לחסום פרסומים של אפליקציות ועדכונים חדשים שמחלקות PreferenceActivity שלהם עשויים להיות פגיעים ל-Fragment Injection. יש לעיין בהודעה שב-Play Console.לאחר המועדים האחרונים לתיקון שמוצגים ב-Play Console, אפליקציות שיכילו פרצות אבטחה לא מתוקנות יוסרו מ-Google Play.

הפעולה הנדרשת

  1. נכנסים לחשבון Play Console, ועוברים לקטע ההתראות כדי לבדוק אילו אפליקציות מושפעות מהבעיות ומהם המועדים האחרונים לתיקון.
  2. מעדכנים את האפליקציות המושפעות ומתקנים את פרצת האבטחה.
  3. שולחים את הגרסאות המעודכנות של האפליקציות המושפעות.

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

פרטים נוספים

היכן שאפשר, יש להגדיר: exported=false למחלקה PreferenceActivity במניפסט. הגדרה זו תמנע שליחה של מנגנוני Intent למחלקה זו על ידי אפליקציות זרות.

אם יש לייצא את מחלקת PreferenceActivity‏ הפגיעה לאפליקציות זרות, עליך לקבוע למה המחלקה פגיעה ולבצע את הפעולות המתאימות. יש שתי אפשרויות:

  1. יישום לא נכון של isValidFragment:

בדוק אם המחלקה הפגיעה מכילה או יורשת יישום של isValidFragment‏ שמחזיר true בכל נתיבי הקוד. אם כן, עדכן את המחלקה כדי לחפש רשימה של מחלקות Fragment מותרות. לדוגמה: אם המחלקה PreferenceActivity אמורה להרשות מחלקות MyFragment ולא Fragments אחרים, יישם בדיקה כגון:

         public boolean isValidFragment(String fragmentName) {
            מחזיר MyFragment.class.getName().equals(fragmentName‎);‎

         }‎‏

  1. targetSdkVersion פחות מ-19 ולא מיישמת את isValidFragment:

אם האפליקציה קובעת כרגע את targetSdkVersion במניפסט כערך הקטן מ-19 והמחלקה הפגיעה לא מכילה אף יישום של isValidFragment, נקודת התורפה עוברת בירושה מ-PreferenceActivity.

כדי לתקן, על המפתחים לעדכן את targetSdkVersion ל-19 ומעלה. לחלופין, אם לא ניתן לעדכן את targetSdkVersion, על המפתחים ליישם את isValidFragment as כמתואר בסעיף 1 כדי לחפש מחלקות Fragment מותרות.

שימו לב שהאפליקציות צריכות לעמוד גם בתנאים של הסכם ההפצה למפתחים ומדיניות התוכן

אנחנו כאן כדי לעזור

אם יש לכם שאלות טכניות בנוגע לפגיעוּת זו, ניתן לפרסם פוסט באתר Stack Overflow ולהשתמש בתג “android-security”. משהו לא ברור בשלבים לפתרון הבעיה? ניתן לפנות אל צוות התמיכה שלנו למפתחים.

false
התפריט הראשי
3346721815245495471
true
חיפוש במרכז העזרה
true
true
true
true
true
5016068
false
false