גוגל מחויבת לקדם הון גזעי עבור קהילות שחורות. תראה איך.
דף זה תורגם על ידי Cloud Translation API.
Switch to English

שיטות עבודה מומלצות לאבטחת אפליקציות

פרק זה מכיל המלצות להבטיח את האבטחה של יישומים במכשירי אנדרואיד.

סקירת קוד מקור

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

  • עקוב אחר הנחיות אבטחה מקיפות בעת ביצוע ביקורות כדי להבטיח כיסוי. השתמש בתקנים פנימיים או חיצוניים רלוונטיים בכדי להבטיח ביקורות עקביות ומלאות.
  • הפעל משקפי שמש, כגון מצביע אנדרואיד סטודיו , בכל קוד האפליקציות באמצעות SDK אנדרואיד ותקן כל בעיה שזוהתה.
  • נתח קוד מקורי באמצעות כלי אוטומטי שיכול לזהות בעיות בניהול זיכרון, כמו הצפת מאגר ושגיאות אחד לאחד.
  • מערכת ה- build של אנדרואיד תומכת ברבים ממכשירי התזה של LLVM, כגון AddressSanitizer ו- UndefinedBehaviorSanitizer , שניתן להשתמש בהם לניתוח זמן ריצה של בעיות הקשורות בזיכרון. בשילוב תחבולות, הנתמכות באנדרואיד באמצעות libFuzzer , חומרי הניקוי יכולים לחשוף מקרי קצה חריגים הדורשים בדיקה נוספת.
  • בודק אבטחה הבקיא צריך לבדוק קוד סיכון גבוה יותר, כגון קריפטו, עיבוד תשלום ועיבוד PII.

בדיקות אוטומטיות

בדיקות אוטומטיות יכולות לעזור באיתור מגוון רחב של בעיות אבטחה ויש לבצע אותן באופן קבוע.

  • הפעל את הגירסה האחרונה של CTS באופן קבוע לאורך כל תהליך הפיתוח כדי לאתר בעיות מוקדם ולהקטין את זמן התיקון. אנדרואיד משתמשת ב- CTS כחלק משילוב מתמשך בתהליך הבנייה האוטומטי שלנו, הבונה מספר פעמים ביום.
  • בדיקת אבטחה אוטומטית של ממשקים, כולל בדיקות עם כניסות לא תקינות (בדיקת fuzz). מערכת ה- build של אנדרואיד תומכת ב- libFuzzer לכתיבת מבחני fuzz .

סריקת פגיעות

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

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

יישומים שעלולים להזיק

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

למידע נוסף על PHAs וכיצד גוגל נלחמת בהם בחנות Play, עיין בתיעוד המפתחים של Google Play Protect .

התקנת אפליקציות והרשאות

הרשאות מוגזמות לאפליקציות המותקנות מראש עלולות ליצור סיכון אבטחה. הגבל את היישומים המותקנים מראש למינימום ההרשאות הנחוצות וודא שאין להם גישה להרשאות או הרשאות מיותרות. הרשאות אפליקציה מתוארות ב- AndroidManifest.xml .

  • אל תעניק הרשאות או הרשאות מיותרות לאפליקציות המותקנות מראש. בדוק היטב אפליקציות עם הרשאות מערכת מכיוון שיש להן הרשאות רגישות מאוד.
  • ודא שכל ההרשאות המבוקשות רלוונטיות והכרחיות לפונקציונליות של אותה יישום ספציפי.
  • ודא שיש גילוי למשתמש עבור כל היישומים המותקנים מראש המשתמשים בהרשאה INSTALL_PACKAGES .
  • ודא שהמפתח מחויב בחוזה שלא להתקין אפליקציות כלשהן בתור UID 0.
  • הערך הרשאות המוצהרות במניפסט של כל היישומים המותקנים דרך הרשת של המפתח.
  • ודא שהמפתח מחויב בחוזה לסרוק את כל כתובות האתרים להורדה של אפליקציות לעדכון אוטומטי ולמתקין באמצעות ממשק ה- API של הגלישה הבטוחה של גוגל לפני הצגת היישומים למכשיר.

חתימת אפליקציה

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

  • ודא שאפליקציות לא חתומות עם מפתח ידוע בציבור, כגון מפתח המפתח של AOSP.
  • ודא שמפתחות המשמשים לחתימה על אפליקציות מנוהלים באופן התואם לנוהגים הסטנדרטיים של התעשייה לטיפול במפתחות רגישים, כולל מודול אבטחת חומרה (HSM) המספק גישה מוגבלת ושומרת ביקורת.
  • ודא שאפליקציות לא חתומות באמצעות מפתח הפלטפורמה. פעולה זו מעניקה לאפליקציה גישה להרשאות חתימה של פלטפורמה, שהן עוצמתיות מאוד ונועדו לשימוש על ידי רכיבי מערכת ההפעלה. אפליקציות מערכת צריכות להשתמש בהרשאות הרשאות.
  • ודא שיישומים עם שם חבילה זה לא חתומים עם מפתחות שונים. זה קורה לעתים קרובות בעת יצירת אפליקציה למכשירים שונים, במיוחד כאשר משתמשים במפתח הפלטפורמה. אם האפליקציה אינה תלויה במכשירים, השתמש באותו מפתח בכל מכשירים. אם האפליקציה היא ספציפית למכשירים, צרו שמות חבילות ייחודיים לכל מכשיר ומפתח.

בידוד אפליקציות ותהליכים

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

בידוד תהליכי שורש

תהליכי שורש הם היעד השכיח ביותר להתקפות הסלמה של הרשאות; הפחתת מספר תהליכי השורש מפחיתה את הסיכון להסלמת הרשאות.

  • ודא שהתקנים מריצים את הקוד המינימלי הדרוש כשורש. במידת האפשר, השתמש בתהליך אנדרואיד רגיל ולא בתהליך שורש. אם תהליך חייב להופיע כשורש במכשיר, תעד את התהליך בבקשת תכונה של AOSP כך שניתן יהיה לבחון אותו באופן פומבי.
  • במידת האפשר, יש לבודד את קוד השורש מנתונים לא מהימנים ולקבל גישה באמצעות תקשורת בין-מעובדת (IPC). לדוגמה, צמצם את פונקציונליות השורש לשירות קטן הנגיש דרך Binder וחשף את השירות עם הרשאת חתימה לאפליקציה עם הרשאות נמוכות או חסרות טיפול לטפל בתעבורת רשת.
  • אסור לתהליכי שורש להאזין בשקע רשת.
  • על תהליכי שורש לא לכלול זמן ריצה לשימוש כללי, כגון Java VM).

בידוד אפליקציות מערכת

באופן כללי, אפליקציות המותקנות מראש לא צריכות לרוץ עם המזהה הייחודי של המערכת המשותפת (UID). אם יש צורך באפליקציה להשתמש בממשק ה- UID המשותף של מערכת או שירות מוגדר אחר (למשל טלפון), האפליקציה לא צריכה לייצא שירותים, מקלטים משדרים או ספקי תוכן שאליהם ניתן לגשת לאפליקציות של צד שלישי המותקנות על ידי משתמשים. .

  • ודא שהתקנים מריצים את הקוד המינימלי הדרוש כמערכת. במידת האפשר, השתמש בתהליך אנדרואיד עם UID משלו במקום לעשות שימוש חוזר בממשק ה- UID של המערכת.
  • במידת האפשר, יש לבודד את קוד המערכת מנתונים לא מהימנים ולחשוף את ה- IPC רק לתהליכים מהימנים אחרים.
  • אסור לתהליכי מערכת להאזין בשקע רשת. זוהי דרישת CTS.

תהליכי בידוד

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

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