אבטחה של מכשיר Android

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

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

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

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

בנוסף לפלטפורמה יציבה שאפשר לבנות עליה, Android מספקת למפתחים תמיכה נוספת בכמה דרכים. צוות האבטחה של Android מחפש נקודות חולשה פוטנציאליות באפליקציות ומציע דרכים לתקן את הבעיות האלה. במכשירים עם Google Play, Play Services מספק עדכוני אבטחה לספריות תוכנה קריטיות, כמו OpenSSL, שמשמשות לאבטחת התקשורת של האפליקציות. צוות האבטחה של Android השיק כלי לבדיקת SSL‏ (nogotofail) שעוזר למפתחים למצוא בעיות אבטחה פוטנציאליות בכל פלטפורמה שבה הם מפתחים.

ב-Android נעשה שימוש גם בתמיכה בחומרה הבסיסית לאבטחה. לדוגמה, טכנולוגיית ARM TrustZone משמשת לאחסון מאובטח של מפתחות קריפטוגרפיים, וכן לאימות של תקינות האתחול. DICE משמש למדידת הקושחה שנטענת לפני הפעלת Android. כך אפשר לאמת מרחוק שהקושחה לא מושפעת מנקודות חולשה קריטיות ידועות שאפשר לנצל כדי לפגוע במפתחים ובמשתמשים.

מידע נוסף למפתחי אפליקציות ל-Android זמין בכתובת developer.android.com.

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

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

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

רקע

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

בקטעים ובדפים הבאים מתוארים מאפייני האבטחה של פלטפורמת Android. באיור 1 מוצגים רכיבי האבטחה והשיקולים ברמות השונות של סטאק התוכנה של Android. כל רכיב מתייחס לרכיבים הבאים כאבטחתם תקינה. מלבד כמות קטנה של קוד של Android OS שפועל בתור root, כל הקוד שמעל לליבת Linux מוגבל על ידי Application Sandbox.

איור 1: סטאק התוכנות של Android

איור 1. סטאק התוכנות של Android

אבני הבניין העיקריות של פלטפורמת Android הן:

  • חומרת המכשיר: Android פועל במגוון רחב של תצורות חומרה, כולל טלפונים ניידים, טאבלטים, שעונים, מכוניות, טלוויזיות חכמות, קופסאות גיימינג ל-OTT וממירים. Android לא תלוי במעבד, אבל הוא מנצל כמה יכולות אבטחה ספציפיות לחומרה, כמו ARM eXecute-Never.
  • מערכת ההפעלה Android: מערכת ההפעלה של הליבה מבוססת על ליבה של Linux. כל המשאבים של המכשיר, כמו פונקציות המצלמה, נתוני ה-GPS, פונקציות ה-Bluetooth, פונקציות הטלפון וחיבורי הרשת, זמינים דרך מערכת ההפעלה.
  • Android Application Runtime: אפליקציות Android נכתבות בדרך כלל בשפת התכנות Java ופועלות בסביבת זמן הריצה של Android‏ (ART). עם זאת, אפליקציות רבות, כולל אפליקציות ושירותי ליבה של Android, הן אפליקציות מקוריות או כוללות ספריות מקוריות. גם אפליקציות ART וגם אפליקציות מקוריות פועלות באותה סביבת אבטחה, שמכילה את ארגז החול של האפליקציות. לאפליקציות מוקצה חלק ייעודי במערכת הקבצים שבו הן יכולות לכתוב נתונים פרטיים, כולל מסדי נתונים וקבצים גולמיים.

אפליקציות Android מרחיבות את מערכת ההפעלה Android. יש שני מקורות ראשיים לאפליקציות:

  • אפליקציות מותקנות מראש: Android כולל קבוצה של אפליקציות מותקנות מראש, כולל טלפון, אימייל, יומן, דפדפן אינטרנט ואנשי קשר. הן פועלות כאפליקציות משתמש ומספקות יכולות מפתח של המכשיר שאפליקציות אחרות יכולות לגשת אליהן. אפליקציות מותקנות מראש יכולות להיות חלק מפלטפורמת Android בקוד פתוח, או שהן יכולות להיות מפותחות על ידי יצרן המכשיר למכשיר ספציפי.
  • אפליקציות שהמשתמשים התקינו: Android מספקת סביבה פתוחה לפיתוח שתומכת בכל אפליקציה של צד שלישי. ב-Google Play מוצעות למשתמשים מאות אלפי אפליקציות.

שירותי האבטחה של Google

Google מספקת קבוצה של שירותים מבוססי-ענן שזמינים למכשירי Android תואמים עם Google Mobile Services. השירותים האלה לא נכללים בפרויקט Android Open Source Project‏ (AOSP), אבל הם כלולים במכשירי Android רבים. מידע נוסף על חלק מהשירותים האלה זמין בסקירה הכללית על שנת 2018 של צוות האבטחה של Android.

שירותי האבטחה העיקריים של Google הם:

  • Google Play: Google Play הוא אוסף שירותים שמאפשרים למשתמשים לגלות, להתקין ולרכוש אפליקציות ממכשיר Android או מהאינטרנט. Google Play מאפשר למפתחים להגיע בקלות למשתמשים ב-Android וללקוחות פוטנציאליים. ב-Google Play יש גם בדיקות על ידי הקהילה, אימות רישיונות של אפליקציות, סריקות אבטחה של אפליקציות ושירותי אבטחה אחרים.
  • עדכוני Android: שירות עדכוני Android מספק יכולות חדשות ועדכוני אבטחה למכשירי Android נבחרים, כולל עדכונים דרך האינטרנט או באוויר (OTA).
  • שירותי אפליקציות: מסגרות שמאפשרות לאפליקציות Android להשתמש ביכולות של ענן, כמו (גיבוי) של נתונים והגדרות של אפליקציות, והעברת הודעות מהענן למכשיר (C2DM) להעברת הודעות דחיפה.
  • אימות אפליקציות: התראה על התקנה של אפליקציות מזיקות או חסימה אוטומטית שלהן, וסריקה מתמשכת של האפליקציות במכשיר, עם התראה על אפליקציות מזיקות או הסרה שלהן.
  • SafetyNet: מערכת לזיהוי פריצות שמשמרת את הפרטיות, כדי לעזור ל-Google לעקוב אחרי פריצות, לצמצם איומי אבטחה ידועים ולזהות איומי אבטחה חדשים.
  • SafetyNet Attestation: ממשק API של צד שלישי שמשמש לקביעת התאימות של המכשיר ל-CTS. אימות יכול גם לזהות את אפליקציית Android שמתקשרת עם שרת האפליקציה.
  • ניהול מכשיר Android: אפליקציית אינטרנט ואפליקציה ל-Android לאיתור מכשיר שאבד או נגנב.

סקירה כללית על תוכנית האבטחה

הרכיבים העיקריים של תוכנית האבטחה של Android כוללים:

  • בדיקת עיצוב: תהליך האבטחה של Android מתחיל בשלב מוקדם במחזור החיים של הפיתוח, עם יצירת מודל ועיצוב אבטחה עשירים וניתן להתאמה אישית. כל תכונה עיקרית בפלטפורמה נבדקת על ידי משאבי הנדסה ואבטחה, ואמצעי בקרת האבטחה המתאימים משולבים בארכיטקטורה של המערכת.
  • בדיקות חדירה ובדיקת קוד: במהלך הפיתוח של הפלטפורמה, רכיבים שנוצרו על ידי Android ורכיבים בקוד פתוח עוברים בדיקות אבטחה קפדניות. הבדיקות האלה מתבצעות על ידי צוות האבטחה של Android, צוות מהנדסי אבטחת המידע של Google ויועצי אבטחה עצמאיים. מטרת הבדיקות האלה היא לזהות נקודות חולשה ונקודות חולשה אפשריות הרבה לפני השקות גדולות, ולבצע סימולציה של סוגי הניתוח שמבצעים מומחי אבטחה חיצוניים לאחר השקה.
  • קוד פתוח ובדיקות על ידי הקהילה: AOSP מאפשר בדיקות אבטחה רחבות על ידי כל גורם מעורב. ב-Android נעשה שימוש גם בטכנולוגיות קוד פתוח שעברו בדיקות אבטחה חיצוניות משמעותיות, כמו ליבה של Linux. Google Play הוא פורום שבו משתמשים וחברות יכולים לספק מידע על אפליקציות ספציפיות ישירות למשתמשים.
  • תגובה לתקרית: למרות אמצעי הזהירות האלה, יכול להיות שיהיו בעיות אבטחה אחרי השליחה. לכן, בפרויקט Android נוצר תהליך מקיף לתגובה לאבטחה. חברי צוות האבטחה של Android עובדים במשרה מלאה ומנטרים את קהילת האבטחה הספציפית ל-Android ואת קהילת האבטחה הכללית כדי למצוא דיונים על נקודות חולשה פוטנציאליות, ובודקים באגים באבטחה שדווחו במסד הנתונים של באגים ב-Android. כשאנחנו מזהים בעיות אמיתיות, לצוות Android יש תהליך תגובה שמאפשר לצמצם במהירות את נקודות החולשה כדי להבטיח שהסיכון הפוטנציאלי לכל משתמשי Android יהיה מינימלי. התשובות שנתמכות בענן יכולות לכלול עדכון של פלטפורמת Android (עדכוני AOSP), הסרה של אפליקציות מ-Google Play והסרה של אפליקציות ממכשירים בשטח.
  • עדכוני אבטחה חודשיים: צוות האבטחה של Android מספק עדכונים חודשיים למכשירי Android של Google ולכל שותפי ייצור המכשירים שלנו.

ארכיטקטורת האבטחה של הפלטפורמה

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

  • הגנה על נתוני האפליקציה והמשתמשים
  • הגנה על משאבי המערכת (כולל הרשת)
  • בידוד האפליקציה מהמערכת, מאפליקציות אחרות ומהמשתמש

כדי להשיג את היעדים האלה, מערכת Android כוללת את תכונות האבטחה הבאות:

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